Hello, hackers! I got a permanent failure of master (commit
ebdb42a0d6a61b93a5bb9f4204408edf5959332c) plpython check on Solaris 10.
Regression output and diffs are attached.
I used the following commands:
./configure CC="ccache gcc" CFLAGS="-m64 -I/opt/csw/include"
PKG_CONFIG_PATH="/opt/csw/lib/pkgconfig:/usr/local/lib/pkgconfig"
LDFLAGS="-L/opt/csw/lib/sparcv9 -L/usr/local/lib/64" --enable-cassert
--enable-debug --enable-nls --enable-tap-tests --with-perl --with-tcl
--with-python --with-gssapi --with-openssl --with-ldap --with-libxml
--with-libxslt --with-icu
gmake > make_results.txt
gmake -C src/pl/plpython check
Binary search has shown that this failure begins with commit
8561e4840c81f7e345be2df170839846814fa004 (Transaction control in PL
procedures.). On the previous commit
(b9ff79b8f17697f3df492017d454caa9920a7183) there's no
plpython_transaction test and plpython check passes.
About the system: SunOS, Release 5.10, KernelID Generic_141444-09.
P.S. It seems that there's a similar failure on Windows, and I'm trying
to reproduce it..
--
Marina Polyakova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
*** /home/buildfarm/mpolyakova/postgrespro_core_353_stable_func/src/pl/plpython/expected/plpython_transaction.out Tue Feb 13 13:00:33 2018
--- /home/buildfarm/mpolyakova/postgrespro_core_353_stable_func/src/pl/plpython/results/plpython_transaction.out Tue Feb 13 13:34:39 2018
***************
*** 88,136 ****
return 1
$$;
SELECT transaction_test4();
! ERROR: spiexceptions.InvalidTransactionTermination: invalid transaction termination
! CONTEXT: Traceback (most recent call last):
! PL/Python function "transaction_test4", line 2, in <module>
! plpy.execute("DO LANGUAGE plpythonu $x$ plpy.commit() $x$")
! PL/Python function "transaction_test4"
! -- commit inside subtransaction (prohibited)
! DO LANGUAGE plpythonu $$
! s = plpy.subtransaction()
! s.enter()
! plpy.commit()
! $$;
! WARNING: forcibly aborting a subtransaction that has not been exited
! ERROR: cannot commit while a subtransaction is active
! CONTEXT: PL/Python anonymous code block
! -- commit inside cursor loop
! CREATE TABLE test2 (x int);
! INSERT INTO test2 VALUES (0), (1), (2), (3), (4);
! TRUNCATE test1;
! DO LANGUAGE plpythonu $$
! for row in plpy.cursor("SELECT * FROM test2 ORDER BY x"):
! plpy.execute("INSERT INTO test1 (a) VALUES (%s)" % row['x'])
! plpy.commit()
! $$;
! ERROR: cannot commit transaction while a cursor is open
! CONTEXT: PL/Python anonymous code block
! SELECT * FROM test1;
! a | b
! ---+---
! (0 rows)
!
! -- rollback inside cursor loop
! TRUNCATE test1;
! DO LANGUAGE plpythonu $$
! for row in plpy.cursor("SELECT * FROM test2 ORDER BY x"):
! plpy.execute("INSERT INTO test1 (a) VALUES (%s)" % row['x'])
! plpy.rollback()
! $$;
! ERROR: cannot abort transaction while a cursor is open
! CONTEXT: PL/Python anonymous code block
! SELECT * FROM test1;
! a | b
! ---+---
! (0 rows)
!
! DROP TABLE test1;
! DROP TABLE test2;
--- 88,94 ----
return 1
$$;
SELECT transaction_test4();
! server closed the connection unexpectedly
! This probably means the server terminated abnormally
! before or while processing the request.
! connection to server was lost
======================================================================
*** /home/buildfarm/mpolyakova/postgrespro_core_353_stable_func/src/pl/plpython/expected/plpython_drop.out Wed Feb 7 17:27:50 2018
--- /home/buildfarm/mpolyakova/postgrespro_core_353_stable_func/src/pl/plpython/results/plpython_drop.out Tue Feb 13 13:34:39 2018
***************
*** 1,6 ****
! --
! -- For paranoia's sake, don't leave an untrusted language sitting around
! --
! SET client_min_messages = WARNING;
! DROP EXTENSION plpythonu CASCADE;
! DROP EXTENSION IF EXISTS plpython2u CASCADE;
--- 1 ----
! psql: FATAL: the database system is in recovery mode
======================================================================
test plpython_schema ... ok
test plpython_populate ... ok
test plpython_test ... ok
test plpython_do ... ok
test plpython_global ... ok
test plpython_import ... ok
test plpython_spi ... ok
test plpython_newline ... ok
test plpython_void ... ok
test plpython_call ... ok
test plpython_params ... ok
test plpython_setof ... ok
test plpython_record ... ok
test plpython_trigger ... ok
test plpython_types ... ok
test plpython_error ... ok
test plpython_ereport ... ok
test plpython_unicode ... ok
test plpython_quote ... ok
test plpython_composite ... ok
test plpython_subtransaction ... ok
test plpython_transaction ... FAILED (test process exited with exit code 2)
test plpython_drop ... FAILED (test process exited with exit code 2)