diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-06-05 07:16:34 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-06-17 09:01:22 +0200 |
commit | 3989f8fb9dd84afda7e27de04bf83e31903d46ba (patch) | |
tree | bf1391d92f46643a5d51ffad36274e795ea8da22 /src | |
parent | 9f7bba2629cf3413638936d0376bb50403144332 (diff) | |
download | postgresql-3989f8fb9dd84afda7e27de04bf83e31903d46ba.tar.gz postgresql-3989f8fb9dd84afda7e27de04bf83e31903d46ba.zip |
Fix subtransaction test for Python 3.10
Starting with Python 3.10, the stacktrace looks differently:
- PL/Python function "subtransaction_exit_subtransaction_in_with", line 3, in <module>
- s.__exit__(None, None, None)
+ PL/Python function "subtransaction_exit_subtransaction_in_with", line 2, in <module>
+ with plpy.subtransaction() as s:
Using try/except specifically makes the error look always the same.
(See https://github.com/python/cpython/pull/25719 for the discussion
of this change in Python.)
Author: Honza Horak <hhorak@redhat.com>
Discussion: https://www.postgresql.org/message-id/flat/853083.1620749597%40sss.pgh.pa.us
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1959080
Diffstat (limited to 'src')
-rw-r--r-- | src/pl/plpython/expected/plpython_subtransaction.out | 11 | ||||
-rw-r--r-- | src/pl/plpython/sql/plpython_subtransaction.sql | 7 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/pl/plpython/expected/plpython_subtransaction.out b/src/pl/plpython/expected/plpython_subtransaction.out index 0d0ff2e36d9..2a56541917d 100644 --- a/src/pl/plpython/expected/plpython_subtransaction.out +++ b/src/pl/plpython/expected/plpython_subtransaction.out @@ -171,8 +171,11 @@ with plpy.subtransaction() as s: $$ LANGUAGE plpythonu; CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError as e: + raise ValueError(e) $$ LANGUAGE plpythonu; SELECT subtransaction_exit_without_enter(); ERROR: ValueError: this subtransaction has not been entered @@ -224,8 +227,8 @@ PL/Python function "subtransaction_enter_subtransaction_in_with" SELECT subtransaction_exit_subtransaction_in_with(); ERROR: ValueError: this subtransaction has already been exited CONTEXT: Traceback (most recent call last): - PL/Python function "subtransaction_exit_subtransaction_in_with", line 3, in <module> - s.__exit__(None, None, None) + PL/Python function "subtransaction_exit_subtransaction_in_with", line 6, in <module> + raise ValueError(e) PL/Python function "subtransaction_exit_subtransaction_in_with" -- Make sure we don't get a "current transaction is aborted" error SELECT 1 as test; diff --git a/src/pl/plpython/sql/plpython_subtransaction.sql b/src/pl/plpython/sql/plpython_subtransaction.sql index 47bb11f1577..cc4b1ae102b 100644 --- a/src/pl/plpython/sql/plpython_subtransaction.sql +++ b/src/pl/plpython/sql/plpython_subtransaction.sql @@ -121,8 +121,11 @@ $$ LANGUAGE plpythonu; CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError as e: + raise ValueError(e) $$ LANGUAGE plpythonu; SELECT subtransaction_exit_without_enter(); |