aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plpython/expected/plpython_subtransaction_5.out
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/expected/plpython_subtransaction_5.out')
-rw-r--r--src/pl/plpython/expected/plpython_subtransaction_5.out448
1 files changed, 0 insertions, 448 deletions
diff --git a/src/pl/plpython/expected/plpython_subtransaction_5.out b/src/pl/plpython/expected/plpython_subtransaction_5.out
deleted file mode 100644
index e172e98f86a..00000000000
--- a/src/pl/plpython/expected/plpython_subtransaction_5.out
+++ /dev/null
@@ -1,448 +0,0 @@
---
--- Test explicit subtransactions
---
--- Test table to see if transactions get properly rolled back
-CREATE TABLE subtransaction_tbl (
- i integer
-);
--- Explicit case for Python <2.6
-CREATE FUNCTION subtransaction_test(what_error text = NULL) RETURNS text
-AS $$
-import sys
-subxact = plpy.subtransaction()
-subxact.__enter__()
-exc = True
-try:
- try:
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (2)")
- if what_error == "SPI":
- plpy.execute("INSERT INTO subtransaction_tbl VALUES ('oops')")
- elif what_error == "Python":
- raise Exception("Python exception")
- except:
- exc = False
- subxact.__exit__(*sys.exc_info())
- raise
-finally:
- if exc:
- subxact.__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
-SELECT subtransaction_test();
- subtransaction_test
----------------------
-
-(1 row)
-
-SELECT * FROM subtransaction_tbl;
- i
----
- 1
- 2
-(2 rows)
-
-TRUNCATE subtransaction_tbl;
-SELECT subtransaction_test('SPI');
-ERROR: spiexceptions.InvalidTextRepresentation: invalid input syntax for type integer: "oops"
-LINE 1: INSERT INTO subtransaction_tbl VALUES ('oops')
- ^
-QUERY: INSERT INTO subtransaction_tbl VALUES ('oops')
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_test", line 11, in <module>
- plpy.execute("INSERT INTO subtransaction_tbl VALUES ('oops')")
-PL/Python function "subtransaction_test"
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
-SELECT subtransaction_test('Python');
-ERROR: Exception: Python exception
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_test", line 13, in <module>
- raise Exception("Python exception")
-PL/Python function "subtransaction_test"
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
--- Context manager case for Python >=2.6
-CREATE FUNCTION subtransaction_ctx_test(what_error text = NULL) RETURNS text
-AS $$
-with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (2)")
- if what_error == "SPI":
- plpy.execute("INSERT INTO subtransaction_tbl VALUES ('oops')")
- elif what_error == "Python":
- raise Exception("Python exception")
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_ctx_test"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-SELECT subtransaction_ctx_test();
-ERROR: function subtransaction_ctx_test() does not exist
-LINE 1: SELECT subtransaction_ctx_test();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
-SELECT subtransaction_ctx_test('SPI');
-ERROR: function subtransaction_ctx_test(unknown) does not exist
-LINE 1: SELECT subtransaction_ctx_test('SPI');
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
-SELECT subtransaction_ctx_test('Python');
-ERROR: function subtransaction_ctx_test(unknown) does not exist
-LINE 1: SELECT subtransaction_ctx_test('Python');
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
--- Nested subtransactions
-CREATE FUNCTION subtransaction_nested_test(swallow boolean = 'f') RETURNS text
-AS $$
-plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
-with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (2)")
- try:
- with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (3)")
- plpy.execute("error")
- except plpy.SPIError, e:
- if not swallow:
- raise
- plpy.notice("Swallowed %s(%r)" % (e.__class__.__name__, e.args[0]))
-return "ok"
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_nested_test"
-DETAIL: SyntaxError: invalid syntax (<string>, line 4)
-SELECT subtransaction_nested_test();
-ERROR: function subtransaction_nested_test() does not exist
-LINE 1: SELECT subtransaction_nested_test();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
-SELECT subtransaction_nested_test('t');
-ERROR: function subtransaction_nested_test(unknown) does not exist
-LINE 1: SELECT subtransaction_nested_test('t');
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
--- Nested subtransactions that recursively call code dealing with
--- subtransactions
-CREATE FUNCTION subtransaction_deeply_nested_test() RETURNS text
-AS $$
-plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
-with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (2)")
- plpy.execute("SELECT subtransaction_nested_test('t')")
-return "ok"
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_deeply_nested_test"
-DETAIL: SyntaxError: invalid syntax (<string>, line 4)
-SELECT subtransaction_deeply_nested_test();
-ERROR: function subtransaction_deeply_nested_test() does not exist
-LINE 1: SELECT subtransaction_deeply_nested_test();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
--- Error conditions from not opening/closing subtransactions
-CREATE FUNCTION subtransaction_exit_without_enter() RETURNS void
-AS $$
-plpy.subtransaction().__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
-CREATE FUNCTION subtransaction_enter_without_exit() RETURNS void
-AS $$
-plpy.subtransaction().__enter__()
-$$ LANGUAGE plpythonu;
-CREATE FUNCTION subtransaction_exit_twice() RETURNS void
-AS $$
-plpy.subtransaction().__enter__()
-plpy.subtransaction().__exit__(None, None, None)
-plpy.subtransaction().__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
-CREATE FUNCTION subtransaction_enter_twice() RETURNS void
-AS $$
-plpy.subtransaction().__enter__()
-plpy.subtransaction().__enter__()
-$$ LANGUAGE plpythonu;
-CREATE FUNCTION subtransaction_exit_same_subtransaction_twice() RETURNS void
-AS $$
-s = plpy.subtransaction()
-s.__enter__()
-s.__exit__(None, None, None)
-s.__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
-CREATE FUNCTION subtransaction_enter_same_subtransaction_twice() RETURNS void
-AS $$
-s = plpy.subtransaction()
-s.__enter__()
-s.__enter__()
-s.__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
--- No warnings here, as the subtransaction gets indeed closed
-CREATE FUNCTION subtransaction_enter_subtransaction_in_with() RETURNS void
-AS $$
-with plpy.subtransaction() as s:
- s.__enter__()
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_enter_subtransaction_in_with"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void
-AS $$
-with plpy.subtransaction() as s:
- s.__exit__(None, None, None)
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_exit_subtransaction_in_with"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-SELECT subtransaction_exit_without_enter();
-ERROR: ValueError: this subtransaction has not been entered
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_exit_without_enter", line 2, in <module>
- plpy.subtransaction().__exit__(None, None, None)
-PL/Python function "subtransaction_exit_without_enter"
-SELECT subtransaction_enter_without_exit();
-WARNING: forcibly aborting a subtransaction that has not been exited
- subtransaction_enter_without_exit
------------------------------------
-
-(1 row)
-
-SELECT subtransaction_exit_twice();
-WARNING: forcibly aborting a subtransaction that has not been exited
-ERROR: ValueError: this subtransaction has not been entered
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_exit_twice", line 3, in <module>
- plpy.subtransaction().__exit__(None, None, None)
-PL/Python function "subtransaction_exit_twice"
-SELECT subtransaction_enter_twice();
-WARNING: forcibly aborting a subtransaction that has not been exited
-WARNING: forcibly aborting a subtransaction that has not been exited
- subtransaction_enter_twice
-----------------------------
-
-(1 row)
-
-SELECT subtransaction_exit_same_subtransaction_twice();
-ERROR: ValueError: this subtransaction has already been exited
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_exit_same_subtransaction_twice", line 5, in <module>
- s.__exit__(None, None, None)
-PL/Python function "subtransaction_exit_same_subtransaction_twice"
-SELECT subtransaction_enter_same_subtransaction_twice();
-WARNING: forcibly aborting a subtransaction that has not been exited
-ERROR: ValueError: this subtransaction has already been entered
-CONTEXT: Traceback (most recent call last):
- PL/Python function "subtransaction_enter_same_subtransaction_twice", line 4, in <module>
- s.__enter__()
-PL/Python function "subtransaction_enter_same_subtransaction_twice"
-SELECT subtransaction_enter_subtransaction_in_with();
-ERROR: function subtransaction_enter_subtransaction_in_with() does not exist
-LINE 1: SELECT subtransaction_enter_subtransaction_in_with();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT subtransaction_exit_subtransaction_in_with();
-ERROR: function subtransaction_exit_subtransaction_in_with() does not exist
-LINE 1: SELECT subtransaction_exit_subtransaction_in_with();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
--- Make sure we don't get a "current transaction is aborted" error
-SELECT 1 as test;
- test
-------
- 1
-(1 row)
-
--- Mix explicit subtransactions and normal SPI calls
-CREATE FUNCTION subtransaction_mix_explicit_and_implicit() RETURNS void
-AS $$
-p = plpy.prepare("INSERT INTO subtransaction_tbl VALUES ($1)", ["integer"])
-try:
- with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- plpy.execute(p, [2])
- plpy.execute(p, ["wrong"])
-except plpy.SPIError:
- plpy.warning("Caught a SPI error from an explicit subtransaction")
-
-try:
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- plpy.execute(p, [2])
- plpy.execute(p, ["wrong"])
-except plpy.SPIError:
- plpy.warning("Caught a SPI error")
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "subtransaction_mix_explicit_and_implicit"
-DETAIL: SyntaxError: invalid syntax (<string>, line 5)
-SELECT subtransaction_mix_explicit_and_implicit();
-ERROR: function subtransaction_mix_explicit_and_implicit() does not exist
-LINE 1: SELECT subtransaction_mix_explicit_and_implicit();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
--- Alternative method names for Python <2.6
-CREATE FUNCTION subtransaction_alternative_names() RETURNS void
-AS $$
-s = plpy.subtransaction()
-s.enter()
-s.exit(None, None, None)
-$$ LANGUAGE plpythonu;
-SELECT subtransaction_alternative_names();
- subtransaction_alternative_names
-----------------------------------
-
-(1 row)
-
--- try/catch inside a subtransaction block
-CREATE FUNCTION try_catch_inside_subtransaction() RETURNS void
-AS $$
-with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- try:
- plpy.execute("INSERT INTO subtransaction_tbl VALUES ('a')")
- except plpy.SPIError:
- plpy.notice("caught")
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "try_catch_inside_subtransaction"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-SELECT try_catch_inside_subtransaction();
-ERROR: function try_catch_inside_subtransaction() does not exist
-LINE 1: SELECT try_catch_inside_subtransaction();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-TRUNCATE subtransaction_tbl;
-ALTER TABLE subtransaction_tbl ADD PRIMARY KEY (i);
-CREATE FUNCTION pk_violation_inside_subtransaction() RETURNS void
-AS $$
-with plpy.subtransaction():
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- try:
- plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
- except plpy.SPIError:
- plpy.notice("caught")
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "pk_violation_inside_subtransaction"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-SELECT pk_violation_inside_subtransaction();
-ERROR: function pk_violation_inside_subtransaction() does not exist
-LINE 1: SELECT pk_violation_inside_subtransaction();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT * FROM subtransaction_tbl;
- i
----
-(0 rows)
-
-DROP TABLE subtransaction_tbl;
--- cursor/subtransactions interactions
-CREATE FUNCTION cursor_in_subxact() RETURNS int AS $$
-with plpy.subtransaction():
- cur = plpy.cursor("select * from generate_series(1, 20) as gen(i)")
- cur.fetch(10)
-fetched = cur.fetch(10);
-return int(fetched[5]["i"])
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "cursor_in_subxact"
-DETAIL: SyntaxError: invalid syntax (<string>, line 3)
-CREATE FUNCTION cursor_aborted_subxact() RETURNS int AS $$
-try:
- with plpy.subtransaction():
- cur = plpy.cursor("select * from generate_series(1, 20) as gen(i)")
- cur.fetch(10);
- plpy.execute("select no_such_function()")
-except plpy.SPIError:
- fetched = cur.fetch(10)
- return int(fetched[5]["i"])
-return 0 # not reached
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "cursor_aborted_subxact"
-DETAIL: SyntaxError: invalid syntax (<string>, line 4)
-CREATE FUNCTION cursor_plan_aborted_subxact() RETURNS int AS $$
-try:
- with plpy.subtransaction():
- plpy.execute('create temporary table tmp(i) '
- 'as select generate_series(1, 10)')
- plan = plpy.prepare("select i from tmp")
- cur = plpy.cursor(plan)
- plpy.execute("select no_such_function()")
-except plpy.SPIError:
- fetched = cur.fetch(5)
- return fetched[2]["i"]
-return 0 # not reached
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "cursor_plan_aborted_subxact"
-DETAIL: SyntaxError: invalid syntax (<string>, line 4)
-CREATE FUNCTION cursor_close_aborted_subxact() RETURNS boolean AS $$
-try:
- with plpy.subtransaction():
- cur = plpy.cursor('select 1')
- plpy.execute("select no_such_function()")
-except plpy.SPIError:
- cur.close()
- return True
-return False # not reached
-$$ LANGUAGE plpythonu;
-ERROR: could not compile PL/Python function "cursor_close_aborted_subxact"
-DETAIL: SyntaxError: invalid syntax (<string>, line 4)
-SELECT cursor_in_subxact();
-ERROR: function cursor_in_subxact() does not exist
-LINE 1: SELECT cursor_in_subxact();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT cursor_aborted_subxact();
-ERROR: function cursor_aborted_subxact() does not exist
-LINE 1: SELECT cursor_aborted_subxact();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT cursor_plan_aborted_subxact();
-ERROR: function cursor_plan_aborted_subxact() does not exist
-LINE 1: SELECT cursor_plan_aborted_subxact();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
-SELECT cursor_close_aborted_subxact();
-ERROR: function cursor_close_aborted_subxact() does not exist
-LINE 1: SELECT cursor_close_aborted_subxact();
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.