diff options
104 files changed, 33268 insertions, 13778 deletions
diff --git a/contrib/test_decoding/expected/concurrent_ddl_dml.out b/contrib/test_decoding/expected/concurrent_ddl_dml.out index 53578c8ed6..3742a2a247 100644 --- a/contrib/test_decoding/expected/concurrent_ddl_dml.out +++ b/contrib/test_decoding/expected/concurrent_ddl_dml.out @@ -2,30 +2,38 @@ Parsed test spec with 2 sessions starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_float s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_float: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl1_float s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; <waiting ...> @@ -33,42 +41,54 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_char s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl1_char s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying; <waiting ...> @@ -76,21 +96,27 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s2_alter_tbl1_float s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -98,21 +124,27 @@ step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; <waitin step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -120,21 +152,27 @@ step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varyi step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_float s1_insert_tbl2 s2_alter_tbl1_float s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_float: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float; @@ -143,21 +181,27 @@ step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; <waitin step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_char s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; @@ -166,21 +210,27 @@ step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varyi step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_char s1_begin s1_insert_tbl1 s2_alter_tbl2_text s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -188,21 +238,27 @@ step s2_alter_tbl2_text: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE text; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' -COMMIT -?column? +table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_char s1_begin s1_insert_tbl1 s2_alter_tbl2_text s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -212,21 +268,27 @@ step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varyi step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' -COMMIT -?column? +table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_boolean s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_boolean: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean; @@ -234,21 +296,27 @@ ERROR: column "val2" cannot be cast automatically to type boolean step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_boolean s1_insert_tbl2 s2_alter_tbl1_boolean s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_boolean: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean; @@ -259,42 +327,54 @@ step s1_commit: COMMIT; step s2_alter_tbl1_boolean: <... completed> ERROR: column "val2" cannot be cast automatically to type boolean step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_int s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_int s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -304,45 +384,57 @@ step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +-------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_float s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_float: ALTER TABLE tbl2 ADD COLUMN val3 FLOAT; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +----------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_float s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -352,45 +444,57 @@ step s2_alter_tbl2_add_float: ALTER TABLE tbl2 ADD COLUMN val3 FLOAT; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +----------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_char s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_char s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -400,24 +504,30 @@ step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -425,20 +535,26 @@ step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; <waiting ... step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s1_commit s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -448,24 +564,30 @@ step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: <... completed> step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 +data +----------------------------------------------------------------------------- +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:null -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_commit s2_get_changes s2_alter_tbl2_add_text s1_begin s1_insert_tbl2_3col s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s2_get_changes s2_alter_tbl2_3rd_int s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -473,11 +595,13 @@ step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; <waiting ... step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT +COMMIT +(3 rows) + step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -486,29 +610,37 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_alter_tbl2_3rd_char: <... completed> step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT +COMMIT +(4 rows) + step s2_alter_tbl2_3rd_int: ALTER TABLE tbl2 ALTER COLUMN val3 TYPE int USING val3::integer; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s1_insert_tbl2_3col s2_alter_tbl2_3rd_text s1_insert_tbl2_3col s1_commit s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -519,25 +651,31 @@ step s1_commit: COMMIT; step s2_alter_tbl2_3rd_text: <... completed> step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_text s1_begin s1_insert_tbl1 s1_insert_tbl2_3col s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -548,25 +686,31 @@ step s1_commit: COMMIT; step s2_alter_tbl2_3rd_char: <... completed> step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s2_alter_tbl2_3rd_text s1_insert_tbl2_3col s1_commit s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -576,24 +720,30 @@ step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_text s1_begin s1_insert_tbl1 s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -603,24 +753,30 @@ step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s2_alter_tbl2_drop_3rd_col s1_insert_tbl1 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -628,12 +784,16 @@ step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/concurrent_stream.out b/contrib/test_decoding/expected/concurrent_stream.out index 6f8b2176db..bf1e1326c6 100644 --- a/contrib/test_decoding/expected/concurrent_stream.out +++ b/contrib/test_decoding/expected/concurrent_stream.out @@ -9,12 +9,16 @@ step s1_toast_insert: INSERT INTO stream_test SELECT large_val(); step s2_ddl: CREATE TABLE stream_test2(data text); step s1_commit: COMMIT; step s1_get_stream_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL,NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'stream-changes', '1'); -data - +data +---------------------------------------- opening a streamed block for transaction -streaming change for transaction +streaming change for transaction closing a streamed block for transaction -committing streamed transaction -?column? +committing streamed transaction +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/delayed_startup.out b/contrib/test_decoding/expected/delayed_startup.out index db8c525ac4..d10de3658a 100644 --- a/contrib/test_decoding/expected/delayed_startup.out +++ b/contrib/test_decoding/expected/delayed_startup.out @@ -6,33 +6,45 @@ step s1w: INSERT INTO do_write DEFAULT VALUES; step s2init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); <waiting ...> step s1c: COMMIT; step s2init: <... completed> -?column? +?column? +-------- +init +(1 row) -init step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1b: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1w: INSERT INTO do_write DEFAULT VALUES; step s1c: COMMIT; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:2 -COMMIT +COMMIT +(3 rows) + step s1b: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1w: INSERT INTO do_write DEFAULT VALUES; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1c: COMMIT; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:3 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/mxact.out b/contrib/test_decoding/expected/mxact.out index f0d96cc67d..03ad3df099 100644 --- a/contrib/test_decoding/expected/mxact.out +++ b/contrib/test_decoding/expected/mxact.out @@ -2,65 +2,89 @@ Parsed test spec with 3 sessions starting permutation: s0init s0start s1begin s1sharepgclass s2begin s2sharepgclass s0w s0start s2commit s1commit step s0init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1begin: BEGIN; step s1sharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s2begin: BEGIN; step s2sharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s0w: INSERT INTO do_write DEFAULT VALUES; step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:1 -COMMIT +COMMIT +(3 rows) + step s2commit: COMMIT; step s1commit: COMMIT; -?column? +?column? +-------- +stop +(1 row) -stop starting permutation: s0init s0start s1begin s1keysharepgclass s2begin s2keysharepgclass s0alter s0w s0start s2commit s1commit step s0init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1begin: BEGIN; step s1keysharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR KEY SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s2begin: BEGIN; step s2keysharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR KEY SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s0alter: ALTER TABLE do_write ADD column ts timestamptz; step s0w: INSERT INTO do_write DEFAULT VALUES; step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN -COMMIT -BEGIN +data +------------------------------------------------------------------------------ +BEGIN +COMMIT +BEGIN table public.do_write: INSERT: id[integer]:1 ts[timestamp with time zone]:null -COMMIT +COMMIT +(5 rows) + step s2commit: COMMIT; step s1commit: COMMIT; -?column? +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/oldest_xmin.out b/contrib/test_decoding/expected/oldest_xmin.out index 02a091398f..dd6053f9c1 100644 --- a/contrib/test_decoding/expected/oldest_xmin.out +++ b/contrib/test_decoding/expected/oldest_xmin.out @@ -3,28 +3,38 @@ Parsed test spec with 2 sessions starting permutation: s0_begin s0_getxid s1_begin s1_insert s0_alter s0_commit s0_checkpoint s0_get_changes s0_get_changes s1_commit s0_vacuum s0_get_changes step s0_begin: BEGIN; step s0_getxid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s1_begin: BEGIN; step s1_insert: INSERT INTO harvest VALUES ((1, 2, 3)); step s0_alter: ALTER TYPE basket DROP ATTRIBUTE mangos; step s0_commit: COMMIT; step s0_checkpoint: CHECKPOINT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data +data +---- +(0 rows) step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data +data +---- +(0 rows) step s1_commit: COMMIT; step s0_vacuum: VACUUM pg_attribute; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------------ +BEGIN table public.harvest: INSERT: fruits[basket]:'(1,2,3)' -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/ondisk_startup.out b/contrib/test_decoding/expected/ondisk_startup.out index 586b03d75d..bc7ff07164 100644 --- a/contrib/test_decoding/expected/ondisk_startup.out +++ b/contrib/test_decoding/expected/ondisk_startup.out @@ -3,50 +3,64 @@ Parsed test spec with 3 sessions starting permutation: s2b s2txid s1init s3b s3txid s2alter s2c s2b s2txid s3c s2c s1insert s1checkpoint s1start s1insert s1alter s1insert s1start step s2b: BEGIN; step s2txid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s1init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); <waiting ...> step s3b: BEGIN; step s3txid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s2alter: ALTER TABLE do_write ADD COLUMN addedbys2 int; step s2c: COMMIT; step s2b: BEGIN; step s2txid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s3c: COMMIT; step s1init: <... completed> -?column? +?column? +-------- +init +(1 row) -init step s2c: COMMIT; step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1checkpoint: CHECKPOINT; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:1 addedbys2[integer]:null -COMMIT +COMMIT +(3 rows) + step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1alter: ALTER TABLE do_write ADD COLUMN addedbys1 int; step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN -table public.do_write: INSERT: id[integer]:2 addedbys2[integer]:null -COMMIT -BEGIN -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------------- +BEGIN +table public.do_write: INSERT: id[integer]:2 addedbys2[integer]:null +COMMIT +BEGIN +COMMIT +BEGIN table public.do_write: INSERT: id[integer]:3 addedbys2[integer]:null addedbys1[integer]:null -COMMIT -?column? +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/snapshot_transfer.out b/contrib/test_decoding/expected/snapshot_transfer.out index c3a0000994..833f47874c 100644 --- a/contrib/test_decoding/expected/snapshot_transfer.out +++ b/contrib/test_decoding/expected/snapshot_transfer.out @@ -4,32 +4,40 @@ starting permutation: s0_begin s0_begin_sub0 s0_log_assignment s0_sub_get_base_s step s0_begin: BEGIN; step s0_begin_sub0: SAVEPOINT s0; step s0_log_assignment: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s0_sub_get_base_snap: INSERT INTO dummy VALUES (0); step s1_produce_new_snap: ALTER TABLE harvest ADD COLUMN mangos int; step s0_insert: INSERT INTO harvest VALUES (1, 2, 3); step s0_end_sub0: RELEASE SAVEPOINT s0; step s0_commit: COMMIT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.dummy: INSERT: i[integer]:0 +data +---------------------------------------------------------------------------------- +BEGIN +table public.dummy: INSERT: i[integer]:0 table public.harvest: INSERT: apples[integer]:1 pears[integer]:2 mangos[integer]:3 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s0_begin s0_begin_sub0 s0_log_assignment s0_begin_sub1 s0_sub_get_base_snap s1_produce_new_snap s0_insert s0_end_sub1 s0_end_sub0 s0_commit s0_get_changes step s0_begin: BEGIN; step s0_begin_sub0: SAVEPOINT s0; step s0_log_assignment: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s0_begin_sub1: SAVEPOINT s1; step s0_sub_get_base_snap: INSERT INTO dummy VALUES (0); step s1_produce_new_snap: ALTER TABLE harvest ADD COLUMN mangos int; @@ -38,12 +46,16 @@ step s0_end_sub1: RELEASE SAVEPOINT s1; step s0_end_sub0: RELEASE SAVEPOINT s0; step s0_commit: COMMIT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.dummy: INSERT: i[integer]:0 +data +---------------------------------------------------------------------------------- +BEGIN +table public.dummy: INSERT: i[integer]:0 table public.harvest: INSERT: apples[integer]:1 pears[integer]:2 mangos[integer]:3 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/subxact_without_top.out b/contrib/test_decoding/expected/subxact_without_top.out index 99ce998822..4241b0015b 100644 --- a/contrib/test_decoding/expected/subxact_without_top.out +++ b/contrib/test_decoding/expected/subxact_without_top.out @@ -15,25 +15,35 @@ step s2_checkpoint: CHECKPOINT; step s1_begin: BEGIN; step s1_dml: INSERT INTO harvest VALUES (43); step s0_many_subxacts: select subxacts(); -subxacts +subxacts +-------- + +(1 row) - step s0_commit: COMMIT; step s2_checkpoint: CHECKPOINT; step s2_get_changes_suppress_output: SELECT null n FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') GROUP BY n; -n +n +- + +(1 row) - step s2_get_changes_suppress_output: SELECT null n FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') GROUP BY n; -n +n +- +(0 rows) step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------ +BEGIN table public.harvest: INSERT: apples[integer]:43 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/contrib/test_decoding/expected/twophase_snapshot.out b/contrib/test_decoding/expected/twophase_snapshot.out index 0e8e1f50fe..f555ffddf7 100644 --- a/contrib/test_decoding/expected/twophase_snapshot.out +++ b/contrib/test_decoding/expected/twophase_snapshot.out @@ -3,39 +3,51 @@ Parsed test spec with 3 sessions starting permutation: s2b s2txid s1init s3b s3txid s2c s2b s2insert s2p s3c s1insert s1start s2cp s1start step s2b: BEGIN; step s2txid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s1init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding', false, true); <waiting ...> step s3b: BEGIN; step s3txid: SELECT pg_current_xact_id() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s2c: COMMIT; step s2b: BEGIN; step s2insert: INSERT INTO do_write DEFAULT VALUES; step s2p: PREPARE TRANSACTION 'test1'; step s3c: COMMIT; step s1init: <... completed> -?column? +?column? +-------- +init +(1 row) -init step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:2 -COMMIT +COMMIT +(3 rows) + step s2cp: COMMIT PREPARED 'test1'; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:1 -PREPARE TRANSACTION 'test1' -COMMIT PREPARED 'test1' -?column? +PREPARE TRANSACTION 'test1' +COMMIT PREPARED 'test1' +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff --git a/src/test/isolation/expected/aborted-keyrevoke.out b/src/test/isolation/expected/aborted-keyrevoke.out index c93762394f..a03542636f 100644 --- a/src/test/isolation/expected/aborted-keyrevoke.out +++ b/src/test/isolation/expected/aborted-keyrevoke.out @@ -5,14 +5,18 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1s s1u s1r s1l s2l s1c s2c @@ -20,13 +24,17 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -35,13 +43,17 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -50,13 +62,17 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -65,13 +81,17 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -80,14 +100,18 @@ step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s1u s2l s1r s1l s1c s2c @@ -96,13 +120,17 @@ step s1u: UPDATE foo SET key = 2; step s2l: SELECT * FROM foo FOR KEY SHARE; <waiting ...> step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -112,13 +140,17 @@ step s1u: UPDATE foo SET key = 2; step s2l: SELECT * FROM foo FOR KEY SHARE; <waiting ...> step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -128,89 +160,113 @@ step s1u: UPDATE foo SET key = 2; step s2l: SELECT * FROM foo FOR KEY SHARE; <waiting ...> step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s2l s1u s2c s1r s1l s1c step s1s: SAVEPOINT f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1u: UPDATE foo SET key = 2; <waiting ...> step s2c: COMMIT; step s1u: <... completed> step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s2l s2c s1u s1r s1l s1c step s1s: SAVEPOINT f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s1s s1u s2c s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; <waiting ...> step s2c: COMMIT; step s1u: <... completed> step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s1s s2c s1u s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1s: SAVEPOINT f; step s2c: COMMIT; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s2c s1s s1u s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; diff --git a/src/test/isolation/expected/alter-table-1.out b/src/test/isolation/expected/alter-table-1.out index dd5d8b11b6..5e88174be4 100644 --- a/src/test/isolation/expected/alter-table-1.out +++ b/src/test/isolation/expected/alter-table-1.out @@ -8,16 +8,20 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 sc2 wx rx3 c2 @@ -27,17 +31,21 @@ step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 wx sc2 rx3 c2 @@ -47,17 +55,21 @@ step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 wx rx3 sc2 c2 @@ -67,16 +79,20 @@ step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -87,16 +103,20 @@ step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -106,18 +126,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 at2 wx sc2 rx3 c2 @@ -126,18 +150,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 at2 wx rx3 sc2 c2 @@ -146,17 +174,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -166,17 +198,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -186,18 +222,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 wx at2 rx3 sc2 c2 @@ -206,17 +246,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -226,17 +270,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -246,16 +294,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -266,16 +318,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -286,16 +342,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -305,19 +365,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 at2 wx sc2 rx3 c2 @@ -325,19 +389,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 at2 wx rx3 sc2 c2 @@ -345,18 +413,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -365,18 +437,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -385,19 +461,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 wx at2 rx3 sc2 c2 @@ -405,18 +485,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -425,18 +509,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -445,17 +533,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -465,17 +557,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -485,17 +581,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -505,19 +605,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 wx s2 at2 rx3 sc2 c2 @@ -525,18 +629,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -545,18 +653,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -565,17 +677,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -585,17 +701,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -605,17 +725,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -625,16 +749,20 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -645,16 +773,20 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -665,16 +797,20 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -685,16 +821,20 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -704,59 +844,71 @@ starting permutation: s1 at1 rx1 sc1 s2 at2 sc2 wx rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx sc2 rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -764,19 +916,23 @@ starting permutation: s1 at1 rx1 sc1 s2 at2 wx rx3 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -784,39 +940,47 @@ starting permutation: s1 at1 rx1 sc1 s2 wx at2 sc2 rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -824,19 +988,23 @@ starting permutation: s1 at1 rx1 sc1 s2 wx at2 rx3 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -844,18 +1012,22 @@ starting permutation: s1 at1 rx1 sc1 s2 wx rx3 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -864,18 +1036,22 @@ starting permutation: s1 at1 rx1 sc1 s2 wx rx3 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -884,18 +1060,22 @@ starting permutation: s1 at1 rx1 sc1 s2 wx rx3 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -904,39 +1084,47 @@ starting permutation: s1 at1 rx1 sc1 wx s2 at2 sc2 rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -944,19 +1132,23 @@ starting permutation: s1 at1 rx1 sc1 wx s2 at2 rx3 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -964,18 +1156,22 @@ starting permutation: s1 at1 rx1 sc1 wx s2 rx3 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -984,18 +1180,22 @@ starting permutation: s1 at1 rx1 sc1 wx s2 rx3 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1004,18 +1204,22 @@ starting permutation: s1 at1 rx1 sc1 wx s2 rx3 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1024,17 +1228,21 @@ starting permutation: s1 at1 rx1 sc1 wx rx3 s2 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1044,17 +1252,21 @@ starting permutation: s1 at1 rx1 sc1 wx rx3 s2 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1064,17 +1276,21 @@ starting permutation: s1 at1 rx1 sc1 wx rx3 s2 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1084,17 +1300,21 @@ starting permutation: s1 at1 rx1 sc1 wx rx3 c2 s2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1104,9 +1324,11 @@ starting permutation: s1 at1 rx1 wx sc1 s2 at2 sc2 rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> @@ -1114,31 +1336,37 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -1146,20 +1374,24 @@ starting permutation: s1 at1 rx1 wx sc1 s2 at2 rx3 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -1167,19 +1399,23 @@ starting permutation: s1 at1 rx1 wx sc1 s2 rx3 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1188,19 +1424,23 @@ starting permutation: s1 at1 rx1 wx sc1 s2 rx3 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1209,19 +1449,23 @@ starting permutation: s1 at1 rx1 wx sc1 s2 rx3 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1230,18 +1474,22 @@ starting permutation: s1 at1 rx1 wx sc1 rx3 s2 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1251,18 +1499,22 @@ starting permutation: s1 at1 rx1 wx sc1 rx3 s2 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1272,18 +1524,22 @@ starting permutation: s1 at1 rx1 wx sc1 rx3 s2 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1293,18 +1549,22 @@ starting permutation: s1 at1 rx1 wx sc1 rx3 c2 s2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1313,9 +1573,11 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 sc2 wx rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1323,19 +1585,23 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1343,59 +1609,71 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1403,69 +1681,83 @@ step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1473,19 +1765,23 @@ step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1493,19 +1789,23 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1513,9 +1813,11 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); @@ -1523,69 +1825,83 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1593,19 +1909,23 @@ step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1613,19 +1933,23 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1633,18 +1957,22 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx rx3 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1653,18 +1981,22 @@ step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx rx3 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1673,18 +2005,22 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx rx3 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1693,18 +2029,22 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx rx3 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1713,9 +2053,11 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; @@ -1724,19 +2066,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; @@ -1744,20 +2090,24 @@ step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; @@ -1765,31 +2115,37 @@ step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1797,20 +2153,24 @@ step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1818,20 +2178,24 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1839,19 +2203,23 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 rx3 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1860,19 +2228,23 @@ step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 rx3 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1881,19 +2253,23 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 rx3 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1902,19 +2278,23 @@ step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 rx3 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1923,17 +2303,21 @@ step sc2: COMMIT; starting permutation: s1 rx1 wx at1 rx3 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -1944,16 +2328,20 @@ step sc2: COMMIT; starting permutation: s1 rx1 wx rx3 at1 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step c2: COMMIT; step at1: <... completed> @@ -1965,16 +2353,20 @@ step sc2: COMMIT; starting permutation: s1 rx1 wx rx3 c2 at1 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -1984,9 +2376,11 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 sc2 wx rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -1995,18 +2389,22 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2015,18 +2413,22 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2034,19 +2436,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2054,19 +2460,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2075,18 +2485,22 @@ step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2094,19 +2508,23 @@ step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2114,79 +2532,95 @@ step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2195,18 +2629,22 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2214,19 +2652,23 @@ step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2234,89 +2676,107 @@ step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx3 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -2324,19 +2784,23 @@ step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx3 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -2344,19 +2808,23 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx3 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2364,19 +2832,23 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx3 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2384,9 +2856,11 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2396,18 +2870,22 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2416,19 +2894,23 @@ step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2437,19 +2919,23 @@ step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2457,20 +2943,24 @@ step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2478,20 +2968,24 @@ step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> @@ -2499,31 +2993,37 @@ step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx3 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -2531,20 +3031,24 @@ step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx3 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -2552,20 +3056,24 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx3 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2573,20 +3081,24 @@ step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx3 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); <waiting ...> step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2594,18 +3106,22 @@ step sc2: COMMIT; starting permutation: rx1 s1 wx at1 rx3 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -2615,17 +3131,21 @@ step sc2: COMMIT; starting permutation: rx1 s1 wx rx3 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step c2: COMMIT; step at1: <... completed> @@ -2636,17 +3156,21 @@ step sc2: COMMIT; starting permutation: rx1 s1 wx rx3 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2656,18 +3180,22 @@ step sc2: COMMIT; starting permutation: rx1 wx s1 at1 rx3 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -2677,17 +3205,21 @@ step sc2: COMMIT; starting permutation: rx1 wx s1 rx3 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step c2: COMMIT; step at1: <... completed> @@ -2698,17 +3230,21 @@ step sc2: COMMIT; starting permutation: rx1 wx s1 rx3 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2718,16 +3254,20 @@ step sc2: COMMIT; starting permutation: rx1 wx rx3 s1 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step c2: COMMIT; @@ -2739,16 +3279,20 @@ step sc2: COMMIT; starting permutation: rx1 wx rx3 s1 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s1: BEGIN; step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -2759,16 +3303,20 @@ step sc2: COMMIT; starting permutation: rx1 wx rx3 c2 s1 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; diff --git a/src/test/isolation/expected/alter-table-2.out b/src/test/isolation/expected/alter-table-2.out index 33ea442113..819bc332e5 100644 --- a/src/test/isolation/expected/alter-table-2.out +++ b/src/test/isolation/expected/alter-table-2.out @@ -6,13 +6,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step s1c: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -23,13 +27,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) N step s2a: BEGIN; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -39,14 +47,18 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -56,13 +68,17 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -73,13 +89,17 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -92,13 +112,17 @@ step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -108,14 +132,18 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -125,13 +153,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -142,13 +174,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -159,15 +195,19 @@ starting permutation: s1a s2a s2b s1b s1c s2c s2d s2e s2f step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -176,14 +216,18 @@ starting permutation: s1a s2a s2b s1b s2c s1c s2d s2e s2f step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -193,14 +237,18 @@ starting permutation: s1a s2a s2b s1b s2c s2d s1c s2e s2f step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -211,13 +259,17 @@ starting permutation: s1a s2a s2b s2c s1b s1c s2d s2e s2f step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -228,13 +280,17 @@ starting permutation: s1a s2a s2b s2c s1b s2d s1c s2e s2f step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; @@ -246,13 +302,17 @@ starting permutation: s1a s2a s2b s2c s2d s1b s2e s2f s1c step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step s2e: INSERT INTO a VALUES (4); @@ -264,13 +324,17 @@ starting permutation: s1a s2a s2b s2c s2d s2e s1b s2f s1c step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> @@ -282,13 +346,17 @@ starting permutation: s1a s2a s2b s2c s2d s2e s2f s1b s1c step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -301,13 +369,17 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -317,14 +389,18 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -334,13 +410,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -351,13 +431,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -368,15 +452,19 @@ starting permutation: s2a s1a s2b s1b s1c s2c s2d s2e s2f step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -385,14 +473,18 @@ starting permutation: s2a s1a s2b s1b s2c s1c s2d s2e s2f step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -402,14 +494,18 @@ starting permutation: s2a s1a s2b s1b s2c s2d s1c s2e s2f step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -420,13 +516,17 @@ starting permutation: s2a s1a s2b s2c s1b s1c s2d s2e s2f step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -437,13 +537,17 @@ starting permutation: s2a s1a s2b s2c s1b s2d s1c s2e s2f step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; @@ -455,13 +559,17 @@ starting permutation: s2a s1a s2b s2c s2d s1b s2e s2f s1c step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step s2e: INSERT INTO a VALUES (4); @@ -473,13 +581,17 @@ starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f s1c step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> @@ -491,13 +603,17 @@ starting permutation: s2a s1a s2b s2c s2d s2e s2f s1b s1c step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -507,16 +623,20 @@ step s1c: COMMIT; starting permutation: s2a s2b s1a s1b s1c s2c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -524,15 +644,19 @@ step s2f: COMMIT; starting permutation: s2a s2b s1a s1b s2c s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -541,15 +665,19 @@ step s2f: COMMIT; starting permutation: s2a s2b s1a s1b s2c s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; step s2d: <... completed> @@ -559,14 +687,18 @@ step s2f: COMMIT; starting permutation: s2a s2b s1a s2c s1b s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -576,14 +708,18 @@ step s2f: COMMIT; starting permutation: s2a s2b s1a s2c s1b s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); <waiting ...> step s1c: COMMIT; @@ -594,14 +730,18 @@ step s2f: COMMIT; starting permutation: s2a s2b s1a s2c s2d s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> step s2e: INSERT INTO a VALUES (4); @@ -612,14 +752,18 @@ step s1c: COMMIT; starting permutation: s2a s2b s1a s2c s2d s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> @@ -630,14 +774,18 @@ step s1c: COMMIT; starting permutation: s2a s2b s1a s2c s2d s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -647,13 +795,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s1b s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; @@ -664,13 +816,17 @@ step s2f: COMMIT; starting permutation: s2a s2b s2c s1a s1b s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); <waiting ...> @@ -682,13 +838,17 @@ step s2f: COMMIT; starting permutation: s2a s2b s2c s1a s2d s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> @@ -700,13 +860,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s2d s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -718,13 +882,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s2d s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -735,13 +903,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s1a s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> @@ -753,13 +925,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s1a s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s2e: INSERT INTO a VALUES (4); @@ -771,13 +947,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s1a s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s2e: INSERT INTO a VALUES (4); @@ -788,13 +968,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s2e s1a s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1a: BEGIN; @@ -806,13 +990,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s2e s1a s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1a: BEGIN; @@ -823,13 +1011,17 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s2e s2f s1a s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; diff --git a/src/test/isolation/expected/alter-table-3.out b/src/test/isolation/expected/alter-table-3.out index aad8372069..427364ee89 100644 --- a/src/test/isolation/expected/alter-table-3.out +++ b/src/test/isolation/expected/alter-table-3.out @@ -7,9 +7,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -21,9 +23,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2a: BEGIN; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -34,9 +38,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -48,9 +54,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; step s2c: <... completed> @@ -64,9 +72,11 @@ step s2a: BEGIN; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -77,9 +87,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -91,9 +103,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; step s2c: <... completed> @@ -105,9 +119,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -119,9 +135,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; @@ -134,9 +152,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -151,9 +171,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -164,9 +186,11 @@ step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -178,9 +202,11 @@ step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; step s2c: <... completed> @@ -192,9 +218,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -206,9 +234,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; @@ -221,9 +251,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -235,9 +267,11 @@ starting permutation: s1a s2a s2b s1b s1c s1d s2c s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -249,9 +283,11 @@ starting permutation: s1a s2a s2b s1b s1c s2c s1d s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> @@ -264,9 +300,11 @@ starting permutation: s1a s2a s2b s1b s2c s1c s1d s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1c: ALTER TABLE a ENABLE TRIGGER t; @@ -279,9 +317,11 @@ starting permutation: s1a s2a s2b s2c s1b s1c s1d s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -293,9 +333,11 @@ starting permutation: s1a s2a s2b s2c s1b s1c s2d s1d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -307,9 +349,11 @@ starting permutation: s1a s2a s2b s2c s1b s2d s1c s1d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -321,9 +365,11 @@ starting permutation: s1a s2a s2b s2c s2d s1b s1c s1d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -338,9 +384,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -351,9 +399,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -365,9 +415,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; step s2c: <... completed> @@ -379,9 +431,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -393,9 +447,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1d: COMMIT; @@ -408,9 +464,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -422,9 +480,11 @@ starting permutation: s2a s1a s2b s1b s1c s1d s2c s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -436,9 +496,11 @@ starting permutation: s2a s1a s2b s1b s1c s2c s1d s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> @@ -451,9 +513,11 @@ starting permutation: s2a s1a s2b s1b s2c s1c s1d s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> step s1c: ALTER TABLE a ENABLE TRIGGER t; @@ -466,9 +530,11 @@ starting permutation: s2a s1a s2b s2c s1b s1c s1d s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -480,9 +546,11 @@ starting permutation: s2a s1a s2b s2c s1b s1c s2d s1d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -494,9 +562,11 @@ starting permutation: s2a s1a s2b s2c s1b s2d s1c s1d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -508,9 +578,11 @@ starting permutation: s2a s1a s2b s2c s2d s1b s1c s1d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -521,9 +593,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s1a s1b s1c s1d s2c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; @@ -535,9 +609,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s1b s1c s2c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; @@ -550,9 +626,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s1b s2c s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); <waiting ...> @@ -565,9 +643,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s2c s1b s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -579,9 +659,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s2c s1b s1c s2d s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -593,9 +675,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s1a s2c s1b s2d s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -607,9 +691,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s1a s2c s2d s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -621,9 +707,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s2c s1a s1b s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -635,9 +723,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s2c s1a s1b s1c s2d s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -649,9 +739,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s2c s1a s1b s2d s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -663,9 +755,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s2c s1a s2d s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -677,9 +771,11 @@ step s1d: COMMIT; starting permutation: s2a s2b s2c s2d s1a s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; diff --git a/src/test/isolation/expected/alter-table-4.out b/src/test/isolation/expected/alter-table-4.out index 1009844f06..fc579101c5 100644 --- a/src/test/isolation/expected/alter-table-4.out +++ b/src/test/isolation/expected/alter-table-4.out @@ -6,13 +6,17 @@ step s1delc1: ALTER TABLE c1 NO INHERIT p; step s2sel: SELECT SUM(a) FROM p; <waiting ...> step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 11 +(1 row) -11 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 starting permutation: s1b s1delc1 s1addc2 s2sel s1c s2sel step s1b: BEGIN; @@ -21,13 +25,17 @@ step s1addc2: ALTER TABLE c2 INHERIT p; step s2sel: SELECT SUM(a) FROM p; <waiting ...> step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 11 +(1 row) -11 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- +101 +(1 row) -101 starting permutation: s1b s1dropc1 s2sel s1c s2sel step s1b: BEGIN; @@ -35,13 +43,17 @@ step s1dropc1: DROP TABLE c1; step s2sel: SELECT SUM(a) FROM p; <waiting ...> step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 1 +(1 row) -1 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 starting permutation: s1b s1delc1 s1modc1a s2sel s1c s2sel step s1b: BEGIN; @@ -52,6 +64,8 @@ step s1c: COMMIT; step s2sel: <... completed> ERROR: attribute "a" of relation "c1" does not match parent's type step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 diff --git a/src/test/isolation/expected/async-notify.out b/src/test/isolation/expected/async-notify.out index 79427789b1..556e180589 100644 --- a/src/test/isolation/expected/async-notify.out +++ b/src/test/isolation/expected/async-notify.out @@ -8,9 +8,11 @@ step notify2: NOTIFY c2, 'payload'; notifier: NOTIFY "c2" with payload "payload" from notifier step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - notifier: NOTIFY "c2" with payload "" from notifier starting permutation: listenc notifyd1 notifyd2 notifys1 @@ -51,13 +53,17 @@ step notify1: NOTIFY c1; step notify2: NOTIFY c2, 'payload'; step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - step lcheck: SELECT 1 AS x; -x +x +- +1 +(1 row) -1 listener: NOTIFY "c1" with payload "" from notifier listener: NOTIFY "c2" with payload "payload" from notifier listener: NOTIFY "c2" with payload "" from notifier @@ -71,14 +77,18 @@ step notify2: NOTIFY c2, 'payload'; notifier: NOTIFY "c2" with payload "payload" from notifier step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - notifier: NOTIFY "c2" with payload "" from notifier step lcheck: SELECT 1 AS x; -x +x +- +1 +(1 row) -1 listener: NOTIFY "c1" with payload "" from notifier listener: NOTIFY "c2" with payload "payload" from notifier listener: NOTIFY "c2" with payload "" from notifier @@ -98,14 +108,20 @@ starting permutation: llisten lbegin usage bignotify usage step llisten: LISTEN c1; LISTEN c2; step lbegin: BEGIN; step usage: SELECT pg_notification_queue_usage() > 0 AS nonzero; -nonzero +nonzero +------- +f +(1 row) -f step bignotify: SELECT count(pg_notify('c1', s::text)) FROM generate_series(1, 1000) s; -count +count +----- + 1000 +(1 row) -1000 step usage: SELECT pg_notification_queue_usage() > 0 AS nonzero; -nonzero +nonzero +------- +t +(1 row) -t diff --git a/src/test/isolation/expected/classroom-scheduling.out b/src/test/isolation/expected/classroom-scheduling.out index f02638c0b5..1d7c885bc0 100644 --- a/src/test/isolation/expected/classroom-scheduling.out +++ b/src/test/isolation/expected/classroom-scheduling.out @@ -2,28 +2,36 @@ Parsed test spec with 2 sessions starting permutation: rx1 wy1 c1 ry2 wx2 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 1 +(1 row) -1 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; starting permutation: rx1 wy1 ry2 c1 wx2 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step c1: COMMIT; step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; ERROR: could not serialize access due to read/write dependencies among transactions @@ -31,14 +39,18 @@ step c2: COMMIT; starting permutation: rx1 wy1 ry2 wx2 c1 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c1: COMMIT; step c2: COMMIT; @@ -46,14 +58,18 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 wy1 ry2 wx2 c2 c1 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; step c1: COMMIT; @@ -61,13 +77,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 ry2 wy1 c1 wx2 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; @@ -76,13 +96,17 @@ step c2: COMMIT; starting permutation: rx1 ry2 wy1 wx2 c1 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c1: COMMIT; @@ -91,13 +115,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 ry2 wy1 wx2 c2 c1 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; @@ -106,13 +134,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 ry2 wx2 wy1 c1 c2 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; @@ -121,13 +153,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 ry2 wx2 wy1 c2 c1 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c2: COMMIT; @@ -136,13 +172,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rx1 ry2 wx2 c2 wy1 c1 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); @@ -151,13 +191,17 @@ step c1: COMMIT; starting permutation: ry2 rx1 wy1 c1 wx2 c2 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; @@ -166,13 +210,17 @@ step c2: COMMIT; starting permutation: ry2 rx1 wy1 wx2 c1 c2 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c1: COMMIT; @@ -181,13 +229,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 rx1 wy1 wx2 c2 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; @@ -196,13 +248,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 rx1 wx2 wy1 c1 c2 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; @@ -211,13 +267,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 rx1 wx2 wy1 c2 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c2: COMMIT; @@ -226,13 +286,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 rx1 wx2 c2 wy1 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); @@ -241,14 +305,18 @@ step c1: COMMIT; starting permutation: ry2 wx2 rx1 wy1 c1 c2 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; step c2: COMMIT; @@ -256,14 +324,18 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 wx2 rx1 wy1 c2 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c2: COMMIT; step c1: COMMIT; @@ -271,14 +343,18 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ry2 wx2 rx1 c2 wy1 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 0 +(1 row) -0 step c2: COMMIT; step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); ERROR: could not serialize access due to read/write dependencies among transactions @@ -286,14 +362,18 @@ step c1: COMMIT; starting permutation: ry2 wx2 c2 rx1 wy1 c1 step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; step c2: COMMIT; step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); step c1: COMMIT; diff --git a/src/test/isolation/expected/create-trigger.out b/src/test/isolation/expected/create-trigger.out index 8deb64a8c0..7f9867804d 100644 --- a/src/test/isolation/expected/create-trigger.out +++ b/src/test/isolation/expected/create-trigger.out @@ -6,9 +6,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -18,9 +20,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2a: BEGIN; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -29,9 +33,11 @@ step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -41,9 +47,11 @@ step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> step s1c: COMMIT; step s2c: <... completed> @@ -55,9 +63,11 @@ step s2a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -66,9 +76,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -78,9 +90,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> step s1c: COMMIT; step s2c: <... completed> @@ -90,9 +104,11 @@ starting permutation: s1a s2a s2b s1b s1c s2c s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; @@ -102,9 +118,11 @@ starting permutation: s1a s2a s2b s1b s2c s1c s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> step s1c: COMMIT; @@ -115,9 +133,11 @@ starting permutation: s1a s2a s2b s2c s1b s2d s1c step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...> step s2d: COMMIT; @@ -128,9 +148,11 @@ starting permutation: s1a s2a s2b s2c s2d s1b s1c step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -142,9 +164,11 @@ step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -153,9 +177,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -165,9 +191,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> step s1c: COMMIT; step s2c: <... completed> @@ -177,9 +205,11 @@ starting permutation: s2a s1a s2b s1b s1c s2c s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; @@ -189,9 +219,11 @@ starting permutation: s2a s1a s2b s1b s2c s1c s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> step s1c: COMMIT; @@ -202,9 +234,11 @@ starting permutation: s2a s1a s2b s2c s1b s2d s1c step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...> step s2d: COMMIT; @@ -215,9 +249,11 @@ starting permutation: s2a s1a s2b s2c s2d s1b s1c step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -226,9 +262,11 @@ step s1c: COMMIT; starting permutation: s2a s2b s1a s1b s1c s2c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; @@ -238,9 +276,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s1b s2c s1c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...> @@ -251,9 +291,11 @@ step s2d: COMMIT; starting permutation: s2a s2b s1a s2c s1b s2d s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...> @@ -264,9 +306,11 @@ step s1c: COMMIT; starting permutation: s2a s2b s1a s2c s2d s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -276,9 +320,11 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s1b s2d s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...> @@ -289,9 +335,11 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s2d s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1a: BEGIN; step s2d: COMMIT; @@ -301,9 +349,11 @@ step s1c: COMMIT; starting permutation: s2a s2b s2c s2d s1a s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1a: BEGIN; diff --git a/src/test/isolation/expected/deadlock-parallel.out b/src/test/isolation/expected/deadlock-parallel.out index cf4d07e615..6fe5e24a02 100644 --- a/src/test/isolation/expected/deadlock-parallel.out +++ b/src/test/isolation/expected/deadlock-parallel.out @@ -2,13 +2,17 @@ Parsed test spec with 4 sessions starting permutation: d1a1 d2a2 e1l e2l d1a2 d2a1 d1c e1c d2c e2c step d1a1: SELECT lock_share(1,x), lock_excl(3,x) FROM bigt LIMIT 1; -lock_share lock_excl +lock_share|lock_excl +----------+--------- + 1| 1 +(1 row) -1 1 step d2a2: select lock_share(2,x) FROM bigt LIMIT 1; -lock_share +lock_share +---------- + 1 +(1 row) -1 step e1l: SELECT lock_excl(1,x) FROM bigt LIMIT 1; <waiting ...> step e2l: SELECT lock_excl(2,x) FROM bigt LIMIT 1; <waiting ...> step d1a2: SET force_parallel_mode = on; @@ -30,25 +34,35 @@ step d2a1: SET force_parallel_mode = on; RESET parallel_tuple_cost; SELECT lock_share(3,x) FROM bigt LIMIT 1; <waiting ...> step d1a2: <... completed> -sum + sum +----- +10000 +(1 row) -10000 step d1c: COMMIT; step e1l: <... completed> -lock_excl +lock_excl +--------- + 1 +(1 row) -1 step d2a1: <... completed> -sum + sum +----- +10000 +(1 row) -10000 -lock_share +lock_share +---------- + 1 +(1 row) -1 step e1c: COMMIT; step d2c: COMMIT; step e2l: <... completed> -lock_excl +lock_excl +--------- + 1 +(1 row) -1 step e2c: COMMIT; diff --git a/src/test/isolation/expected/delete-abort-savept-2.out b/src/test/isolation/expected/delete-abort-savept-2.out index f66a90c6f0..6fc991ae00 100644 --- a/src/test/isolation/expected/delete-abort-savept-2.out +++ b/src/test/isolation/expected/delete-abort-savept-2.out @@ -2,75 +2,99 @@ Parsed test spec with 2 sessions starting permutation: s1l s1svp s1d s1r s2l s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s1r s2l2 s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1r: ROLLBACK TO f; step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l2 s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; <waiting ...> step s1r: ROLLBACK TO f; step s2l2: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; diff --git a/src/test/isolation/expected/delete-abort-savept.out b/src/test/isolation/expected/delete-abort-savept.out index 284aa89d35..8f70bab45d 100644 --- a/src/test/isolation/expected/delete-abort-savept.out +++ b/src/test/isolation/expected/delete-abort-savept.out @@ -2,94 +2,118 @@ Parsed test spec with 2 sessions starting permutation: s1l s1svp s1d s1r s1c s2l s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s1r s2l s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s2l s1d s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s2l s1svp s1d s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR UPDATE; <waiting ...> step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2l s1l s2c s1svp s1d s1r s1c step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; <waiting ...> step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; @@ -97,14 +121,18 @@ step s1c: COMMIT; starting permutation: s2l s2c s1l s1svp s1d s1r s1c step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; diff --git a/src/test/isolation/expected/detach-partition-concurrently-1.out b/src/test/isolation/expected/detach-partition-concurrently-1.out index 9b4526773e..bae53dd0b2 100644 --- a/src/test/isolation/expected/detach-partition-concurrently-1.out +++ b/src/test/isolation/expected/detach-partition-concurrently-1.out @@ -3,120 +3,154 @@ Parsed test spec with 3 sessions starting permutation: s1b s1s s2detach s1s s1c s1s step s1b: BEGIN; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 step s1c: COMMIT; step s2detach: <... completed> step s1s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 starting permutation: s1b s1s s2detach s1s s3s s3i s1c s3i s2drop s1s step s1b: BEGIN; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 step s3s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 step s3i: SELECT relpartbound IS NULL FROM pg_class where relname = 'd_listp2'; -?column? +?column? +-------- +f +(1 row) -f step s1c: COMMIT; step s2detach: <... completed> step s3i: SELECT relpartbound IS NULL FROM pg_class where relname = 'd_listp2'; -?column? +?column? +-------- +t +(1 row) -t step s2drop: DROP TABLE d_listp2; step s1s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 starting permutation: s1b s1s s2detach s1ins s1s s1c step s1b: BEGIN; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1ins: INSERT INTO d_listp VALUES (1); step s1s: SELECT * FROM d_listp; -a +a +- +1 +1 +(2 rows) -1 -1 step s1c: COMMIT; step s2detach: <... completed> starting permutation: s1b s1s s1ins2 s2detach s1ins s1s s1c step s1b: BEGIN; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1ins2: INSERT INTO d_listp VALUES (2); step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1ins: INSERT INTO d_listp VALUES (1); step s1s: SELECT * FROM d_listp; -a +a +- +1 +1 +(2 rows) -1 -1 step s1c: COMMIT; step s2detach: <... completed> starting permutation: s1brr s1s s2detach s1ins s1s s1c step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1ins: INSERT INTO d_listp VALUES (1); step s1s: SELECT * FROM d_listp; -a +a +- +1 +1 +2 +(3 rows) -1 -1 -2 step s1c: COMMIT; step s2detach: <... completed> starting permutation: s1brr s1s s2detach s1s s1c step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1c: COMMIT; step s2detach: <... completed> @@ -133,21 +167,27 @@ starting permutation: s1brr s1prep s1s s2detach s1s s1exec1 s3s s1dealloc s1c step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1prep: PREPARE f(int) AS INSERT INTO d_listp VALUES ($1); step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1exec1: EXECUTE f(1); step s3s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 step s1dealloc: DEALLOCATE f; step s1c: COMMIT; step s2detach: <... completed> @@ -158,16 +198,20 @@ step s1prep: PREPARE f(int) AS INSERT INTO d_listp VALUES ($1); step s1exec2: EXECUTE f(2); step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +2 +(3 rows) -1 -2 -2 step s1exec2: EXECUTE f(2); step s3s: SELECT * FROM d_listp; -a +a +- +1 +(1 row) -1 step s1c: COMMIT; step s2detach: <... completed> step s1dealloc: DEALLOCATE f; @@ -176,16 +220,20 @@ starting permutation: s1brr s1prep s1s s2detach s1s s1exec2 s1c s1dealloc step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1prep: PREPARE f(int) AS INSERT INTO d_listp VALUES ($1); step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1exec2: EXECUTE f(2); step s1c: COMMIT; step s2detach: <... completed> @@ -196,10 +244,12 @@ step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1prep: PREPARE f(int) AS INSERT INTO d_listp VALUES ($1); step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1exec2: EXECUTE f(2); step s1c: COMMIT; step s2detach: <... completed> @@ -210,10 +260,12 @@ step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1prep1: PREPARE f(int) AS INSERT INTO d_listp VALUES (1); step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1exec2: EXECUTE f(2); step s1c: COMMIT; step s2detach: <... completed> @@ -224,10 +276,12 @@ step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1prep2: PREPARE f(int) AS INSERT INTO d_listp VALUES (2); step s2detach: ALTER TABLE d_listp DETACH PARTITION d_listp2 CONCURRENTLY; <waiting ...> step s1s: SELECT * FROM d_listp; -a +a +- +1 +2 +(2 rows) -1 -2 step s1exec2: EXECUTE f(2); step s1c: COMMIT; step s2detach: <... completed> diff --git a/src/test/isolation/expected/detach-partition-concurrently-2.out b/src/test/isolation/expected/detach-partition-concurrently-2.out index 85be707b40..6f025d81f5 100644 --- a/src/test/isolation/expected/detach-partition-concurrently-2.out +++ b/src/test/isolation/expected/detach-partition-concurrently-2.out @@ -3,10 +3,12 @@ Parsed test spec with 3 sessions starting permutation: s1b s1s s2d s3i1 s1c step s1b: BEGIN; step s1s: SELECT * FROM d_lp_fk; -a +a +- +1 +2 +(2 rows) -1 -2 step s2d: ALTER TABLE d_lp_fk DETACH PARTITION d_lp_fk_1 CONCURRENTLY; <waiting ...> step s3i1: INSERT INTO d_lp_fk_r VALUES (1); ERROR: insert or update on table "d_lp_fk_r" violates foreign key constraint "d_lp_fk_r_a_fkey" @@ -16,10 +18,12 @@ step s2d: <... completed> starting permutation: s1b s1s s2d s3i2 s3i2 s1c step s1b: BEGIN; step s1s: SELECT * FROM d_lp_fk; -a +a +- +1 +2 +(2 rows) -1 -2 step s2d: ALTER TABLE d_lp_fk DETACH PARTITION d_lp_fk_1 CONCURRENTLY; <waiting ...> step s3i2: INSERT INTO d_lp_fk_r VALUES (2); step s3i2: INSERT INTO d_lp_fk_r VALUES (2); @@ -29,10 +33,12 @@ step s2d: <... completed> starting permutation: s1b s1s s3i1 s2d s1c step s1b: BEGIN; step s1s: SELECT * FROM d_lp_fk; -a +a +- +1 +2 +(2 rows) -1 -2 step s3i1: INSERT INTO d_lp_fk_r VALUES (1); step s2d: ALTER TABLE d_lp_fk DETACH PARTITION d_lp_fk_1 CONCURRENTLY; ERROR: removing partition "d_lp_fk_1" violates foreign key constraint "d_lp_fk_r_a_fkey1" @@ -41,10 +47,12 @@ step s1c: COMMIT; starting permutation: s1b s1s s3i2 s2d s1c step s1b: BEGIN; step s1s: SELECT * FROM d_lp_fk; -a +a +- +1 +2 +(2 rows) -1 -2 step s3i2: INSERT INTO d_lp_fk_r VALUES (2); step s2d: ALTER TABLE d_lp_fk DETACH PARTITION d_lp_fk_1 CONCURRENTLY; <waiting ...> step s1c: COMMIT; @@ -53,10 +61,12 @@ step s2d: <... completed> starting permutation: s1b s1s s3b s2d s3i1 s1c s3c step s1b: BEGIN; step s1s: SELECT * FROM d_lp_fk; -a +a +- +1 +2 +(2 rows) -1 -2 step s3b: BEGIN; step s2d: ALTER TABLE d_lp_fk DETACH PARTITION d_lp_fk_1 CONCURRENTLY; <waiting ...> step s3i1: INSERT INTO d_lp_fk_r VALUES (1); diff --git a/src/test/isolation/expected/detach-partition-concurrently-3.out b/src/test/isolation/expected/detach-partition-concurrently-3.out index 7ac22a6b15..e7fb5f8307 100644 --- a/src/test/isolation/expected/detach-partition-concurrently-3.out +++ b/src/test/isolation/expected/detach-partition-concurrently-3.out @@ -4,24 +4,30 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1describe s1alter step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1describe: SELECT 'd3_listp' AS root, * FROM pg_partition_tree('d3_listp') UNION ALL SELECT 'd3_listp1', * FROM pg_partition_tree('d3_listp1'); -root relid parentrelid isleaf level +root |relid |parentrelid|isleaf|level +---------+---------+-----------+------+----- +d3_listp |d3_listp | |f | 0 +d3_listp |d3_listp2|d3_listp |t | 1 +d3_listp1|d3_listp1| |t | 0 +(3 rows) -d3_listp d3_listp f 0 -d3_listp d3_listp2 d3_listp t 1 -d3_listp1 d3_listp1 t 0 step s1alter: ALTER TABLE d3_listp1 ALTER a DROP NOT NULL; ERROR: cannot alter partition "d3_listp1" with an incomplete detach @@ -29,14 +35,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1insert s1c step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1insert: INSERT INTO d3_listp VALUES (1); @@ -47,36 +57,46 @@ starting permutation: s2snitch s1brr s1s s2detach s1cancel s1insert s1c s1spart step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1insert: INSERT INTO d3_listp VALUES (1); step s1c: COMMIT; step s1spart: SELECT * FROM d3_listp1; -a +a +- +1 +1 +(2 rows) -1 -1 starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1insertpart step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; @@ -86,24 +106,30 @@ starting permutation: s2snitch s1b s1s s2detach2 s1cancel s1c s1brr s1insert s1s step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach2: ALTER TABLE d3_listp DETACH PARTITION d3_listp2 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach2: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1insert: INSERT INTO d3_listp VALUES (1); step s1s: SELECT * FROM d3_listp; -a +a +- +1 +1 +(2 rows) -1 -1 step s1insert: INSERT INTO d3_listp VALUES (1); step s1c: COMMIT; @@ -111,84 +137,108 @@ starting permutation: s2snitch s1b s1s s2detach2 s1cancel s1c s1brr s1s s1insert step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach2: ALTER TABLE d3_listp DETACH PARTITION d3_listp2 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach2: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1brr: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s1insert: INSERT INTO d3_listp VALUES (1); step s1s: SELECT * FROM d3_listp; -a +a +- +1 +1 +(2 rows) -1 -1 step s1c: COMMIT; starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1drop s1list step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1drop: DROP TABLE d3_listp; step s1list: SELECT relname FROM pg_catalog.pg_class WHERE relname LIKE 'd3_listp%' ORDER BY 1; -relname +relname +------- +(0 rows) starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1trunc s1spart step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1trunc: TRUNCATE TABLE d3_listp; step s1spart: SELECT * FROM d3_listp1; -a +a +- +1 +(1 row) -1 starting permutation: s2snitch s1b s1s s2detach s1cancel s1noop s2detach2 s1c step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1noop: @@ -200,14 +250,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1noop s2detachfinal s1 step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1noop: @@ -220,14 +274,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1droppart s2detach step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; @@ -238,14 +296,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s2begin s2drop s1s step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; @@ -254,29 +316,37 @@ step s2drop: DROP TABLE d3_listp1; step s1s: SELECT * FROM d3_listp; <waiting ...> step s2commit: COMMIT; step s1s: <... completed> -a +a +- +(0 rows) starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1b s1spart s2detachfinal s1c step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1b: BEGIN; step s1spart: SELECT * FROM d3_listp1; -a +a +- +1 +(1 row) -1 step s2detachfinal: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 FINALIZE; <waiting ...> step s1c: COMMIT; step s2detachfinal: <... completed> @@ -285,20 +355,26 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1b s1s s2detachfin step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +(0 rows) step s2detachfinal: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 FINALIZE; step s1c: COMMIT; @@ -307,22 +383,28 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s1b s1spart s2detac step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; step s1b: BEGIN; step s1spart: SELECT * FROM d3_listp1; -a +a +- +1 +(1 row) -1 step s2detachfinal: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 FINALIZE; <waiting ...> step s1c: COMMIT; step s2detachfinal: <... completed> @@ -331,14 +413,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s2begin s2detachfin step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; @@ -350,14 +436,18 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s2begin s2detachfin step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; @@ -366,22 +456,28 @@ step s2detachfinal: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 FINALIZE; step s1spart: SELECT * FROM d3_listp1; <waiting ...> step s2commit: COMMIT; step s1spart: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s2snitch s1b s1s s2detach s1cancel s1c s2begin s2detachfinal s1insertpart s2commit step s2snitch: INSERT INTO d3_pid SELECT pg_backend_pid(); step s1b: BEGIN; step s1s: SELECT * FROM d3_listp; -a +a +- +1 +(1 row) -1 step s2detach: ALTER TABLE d3_listp DETACH PARTITION d3_listp1 CONCURRENTLY; <waiting ...> step s1cancel: SELECT pg_cancel_backend(pid) FROM d3_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: COMMIT; diff --git a/src/test/isolation/expected/detach-partition-concurrently-4.out b/src/test/isolation/expected/detach-partition-concurrently-4.out index d49736a17d..d728ecdf4c 100644 --- a/src/test/isolation/expected/detach-partition-concurrently-4.out +++ b/src/test/isolation/expected/detach-partition-concurrently-4.out @@ -4,15 +4,19 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1insert s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1insert: insert into d4_fk values (1); @@ -23,10 +27,12 @@ starting permutation: s2snitch s1b s1s s2detach s1insert s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" @@ -37,15 +43,19 @@ starting permutation: s2snitch s1brr s1s s2detach s1cancel s1insert s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1insert: insert into d4_fk values (1); @@ -56,10 +66,12 @@ starting permutation: s2snitch s1brr s1s s2detach s1insert s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" @@ -73,15 +85,19 @@ step s1declare: declare f cursor for select * from d4_primary; step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1fetchall: fetch all from f; -a +a +- +1 +2 +(2 rows) -1 -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1c: commit; @@ -92,10 +108,12 @@ step s1b: begin; step s1declare: declare f cursor for select * from d4_primary; step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1fetchall: fetch all from f; -a +a +- +1 +2 +(2 rows) -1 -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s2detach: <... completed> @@ -108,8 +126,10 @@ step s1declare: declare f cursor for select * from d4_primary; step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1svpt: savepoint f; @@ -117,10 +137,12 @@ step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1rollback: rollback to f; step s1fetchall: fetch all from f; -a +a +- +1 +2 +(2 rows) -1 -2 step s1c: commit; starting permutation: s2snitch s1b s1declare s2detach s1svpt s1insert s1rollback s1fetchall s1c @@ -133,10 +155,12 @@ step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1rollback: rollback to f; step s1fetchall: fetch all from f; -a +a +- +1 +2 +(2 rows) -1 -2 step s1c: commit; step s2detach: <... completed> @@ -147,12 +171,16 @@ step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; step s1declare: declare f cursor for select * from d4_primary; step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s1fetchall: fetch all from f; -a +a +- +2 +(1 row) -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1c: commit; @@ -163,9 +191,11 @@ step s1b: begin; step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; step s1declare: declare f cursor for select * from d4_primary; step s1fetchall: fetch all from f; -a +a +- +2 +(1 row) -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1c: commit; @@ -177,16 +207,20 @@ step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; step s1declare: declare f cursor for select * from d4_primary; step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s1svpt: savepoint f; step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1rollback: rollback to f; step s1fetchall: fetch all from f; -a +a +- +2 +(1 row) -2 step s1c: commit; starting permutation: s2snitch s1b s2detach s1declare s1svpt s1insert s1rollback s1fetchall s1c @@ -199,9 +233,11 @@ step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1rollback: rollback to f; step s1fetchall: fetch all from f; -a +a +- +2 +(1 row) -2 step s1c: commit; starting permutation: s2snitch s1brr s1declare2 s1fetchone s2detach s1cancel s1updcur s1c @@ -209,14 +245,18 @@ step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1declare2: declare f cursor for select * from d4_fk where a = 2; step s1fetchone: fetch 1 from f; -a +a +- +2 +(1 row) -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1updcur: update d4_fk set a = 1 where current of f; @@ -228,9 +268,11 @@ step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1declare2: declare f cursor for select * from d4_fk where a = 2; step s1fetchone: fetch 1 from f; -a +a +- +2 +(1 row) -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1updcur: update d4_fk set a = 1 where current of f; ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" @@ -242,9 +284,11 @@ step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1declare2: declare f cursor for select * from d4_fk where a = 2; step s1fetchone: fetch 1 from f; -a +a +- +2 +(1 row) -2 step s1updcur: update d4_fk set a = 1 where current of f; step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1c: commit; @@ -255,10 +299,12 @@ starting permutation: s2snitch s1b s1s s2detach s3insert s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s3insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" @@ -269,10 +315,12 @@ starting permutation: s2snitch s1b s1s s2detach s3brr s3insert s3commit s1cancel step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s3brr: begin isolation level repeatable read; step s3insert: insert into d4_fk values (1); @@ -280,8 +328,10 @@ ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk step s3commit: commit; step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1c: commit; @@ -290,10 +340,12 @@ starting permutation: s2snitch s1b s1s s2detach s3brr s3insert s3commit s1c step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s3brr: begin isolation level repeatable read; step s3insert: insert into d4_fk values (1); @@ -306,24 +358,30 @@ starting permutation: s2snitch s1brr s1s s2detach s1cancel s1noop s3vacfreeze s1 step s2snitch: insert into d4_pid select pg_backend_pid(); step s1brr: begin isolation level repeatable read; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1noop: step s3vacfreeze: vacuum freeze pg_catalog.pg_inherits; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1c: commit; @@ -332,23 +390,29 @@ starting permutation: s2snitch s1b s1s s2detach s1cancel s1noop s3vacfreeze s1s step s2snitch: insert into d4_pid select pg_backend_pid(); step s1b: begin; step s1s: select * from d4_primary; -a +a +- +1 +2 +(2 rows) -1 -2 step s2detach: alter table d4_primary detach partition d4_primary1 concurrently; <waiting ...> step s1cancel: select pg_cancel_backend(pid) from d4_pid; pg_cancel_backend +----------------- +t +(1 row) -t step s2detach: <... completed> ERROR: canceling statement due to user request step s1noop: step s3vacfreeze: vacuum freeze pg_catalog.pg_inherits; step s1s: select * from d4_primary; -a +a +- +2 +(1 row) -2 step s1insert: insert into d4_fk values (1); ERROR: insert or update on table "d4_fk" violates foreign key constraint "d4_fk_a_fkey" step s1c: commit; diff --git a/src/test/isolation/expected/drop-index-concurrently-1.out b/src/test/isolation/expected/drop-index-concurrently-1.out index 8e6adb66bb..97e1a6e779 100644 --- a/src/test/isolation/expected/drop-index-concurrently-1.out +++ b/src/test/isolation/expected/drop-index-concurrently-1.out @@ -4,41 +4,53 @@ starting permutation: noseq chkiso prepi preps begin explaini explains select2 d step noseq: SET enable_seqscan = false; step chkiso: SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; is_read_committed +----------------- +t +(1 row) -t step prepi: PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; step preps: PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; step begin: BEGIN; step explaini: EXPLAIN (COSTS OFF) EXECUTE getrow_idx; -QUERY PLAN - -Sort - Sort Key: id +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id -> Index Scan using test_dc_data on test_dc - Index Cond: (data = 34) -step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; -QUERY PLAN + Index Cond: (data = 34) +(4 rows) -Sort - Sort Key: id, data +step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id, data -> Index Scan using test_dc_pkey on test_dc - Filter: ((data)::text = '34'::text) + Filter: ((data)::text = '34'::text) +(4 rows) + step select2: SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step drop: DROP INDEX CONCURRENTLY test_dc_data; <waiting ...> step insert2: INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); step end2: COMMIT; step selecti: EXECUTE getrow_idx; -id data + id|data +---+---- + 34| 34 +134| 34 +(2 rows) -34 34 -134 34 step selects: EXECUTE getrow_seq; -id data + id|data +---+---- + 34| 34 +134| 34 +(2 rows) -34 34 -134 34 step end: COMMIT; step drop: <... completed> diff --git a/src/test/isolation/expected/drop-index-concurrently-1_2.out b/src/test/isolation/expected/drop-index-concurrently-1_2.out index 87d07955d0..04612d3cac 100644 --- a/src/test/isolation/expected/drop-index-concurrently-1_2.out +++ b/src/test/isolation/expected/drop-index-concurrently-1_2.out @@ -4,39 +4,51 @@ starting permutation: noseq chkiso prepi preps begin explaini explains select2 d step noseq: SET enable_seqscan = false; step chkiso: SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; is_read_committed +----------------- +f +(1 row) -f step prepi: PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; step preps: PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; step begin: BEGIN; step explaini: EXPLAIN (COSTS OFF) EXECUTE getrow_idx; -QUERY PLAN - -Sort - Sort Key: id +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id -> Index Scan using test_dc_data on test_dc - Index Cond: (data = 34) -step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; -QUERY PLAN + Index Cond: (data = 34) +(4 rows) -Sort - Sort Key: id, data +step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id, data -> Index Scan using test_dc_pkey on test_dc - Filter: ((data)::text = '34'::text) + Filter: ((data)::text = '34'::text) +(4 rows) + step select2: SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step drop: DROP INDEX CONCURRENTLY test_dc_data; <waiting ...> step insert2: INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); step end2: COMMIT; step selecti: EXECUTE getrow_idx; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step selects: EXECUTE getrow_seq; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step end: COMMIT; step drop: <... completed> diff --git a/src/test/isolation/expected/eval-plan-qual-trigger.out b/src/test/isolation/expected/eval-plan-qual-trigger.out index 833834afaa..f6714c2e59 100644 --- a/src/test/isolation/expected/eval-plan-qual-trigger.out +++ b/src/test/isolation/expected/eval-plan-qual-trigger.out @@ -10,21 +10,29 @@ starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -37,9 +45,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-a = text key-a: t @@ -53,35 +63,47 @@ step s2_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_r s2_upd_a_data s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -94,9 +116,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_r: ROLLBACK; s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t @@ -110,15 +134,19 @@ step s2_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_c s2_del_a s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -126,21 +154,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -153,9 +189,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-a = text key-a: t @@ -169,14 +207,18 @@ step s2_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_r s2_del_a s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -184,21 +226,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -211,9 +261,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_r: ROLLBACK; s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t @@ -227,34 +279,46 @@ step s2_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -267,9 +331,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -286,35 +352,47 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -327,9 +405,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -344,15 +424,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -360,21 +444,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -387,9 +479,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -406,15 +500,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -422,21 +520,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -449,9 +555,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -466,15 +574,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -482,21 +594,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -509,9 +629,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -524,13 +646,17 @@ step s2_upd_a_data: step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -538,21 +664,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -565,9 +699,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -582,15 +718,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d s1_b_rc s2_b_rc s1_ins_a s2_ins_a s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -598,19 +738,25 @@ step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s2) step s2_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; <waiting ...> step s1_c: COMMIT; @@ -618,9 +764,11 @@ step s2_ins_a: <... completed> ERROR: duplicate key value violates unique constraint "trigtest_pkey" step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d s1_b_rc s2_b_rc s1_ins_a s2_ins_a s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -628,32 +776,42 @@ step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s2) step s2_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; <waiting ...> step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s2) step s2_ins_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s2 +(1 row) -key-a val-a-s2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-a|val-a-s2 +(1 row) -key-a val-a-s2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -665,23 +823,31 @@ step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH R s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -694,9 +860,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -713,15 +881,19 @@ s2: NOTICE: upk: text val-a-s1-ups1 <> text mismatch: t s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-upserts2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -733,23 +905,31 @@ step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH R s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -762,9 +942,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -781,15 +963,19 @@ s2: NOTICE: upk: text val-a-s1-ups1 <> text mismatch: t s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-upserts2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -799,19 +985,25 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH R step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -828,14 +1020,18 @@ s2: NOTICE: upk: text val-a-s1 <> text mismatch: t s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------------- +key-a|val-a-s1-upserts2 +(1 row) -key-a val-a-s1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------------- +key-a|val-a-s1-upserts2 +(1 row) -key-a val-a-s1-upserts2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s2_upsert_a_data s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -845,19 +1041,25 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH R step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -871,14 +1073,18 @@ step s2_upsert_a_data: step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -888,19 +1094,25 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH R step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -912,9 +1124,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -931,14 +1145,18 @@ s2: NOTICE: upk: text val-a-s1-ups1 <> text mismatch: t s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s1_upd_a_data s2_upsert_a_data s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -948,19 +1166,25 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH R step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -972,9 +1196,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -988,33 +1214,45 @@ step s2_upsert_a_data: step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-upss2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 starting permutation: s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1026,9 +1264,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1044,34 +1284,46 @@ s2: NOTICE: upk: text val-a-s1-ups1 <> text mismatch: t s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1083,9 +1335,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1099,35 +1353,47 @@ step s1_r: ROLLBACK; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_del_a s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1139,9 +1405,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1157,34 +1425,46 @@ s2: NOTICE: upk: text val-a-s1-ups1 <> text mismatch: t s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1-ups1) new: <NULL> step s2_del_a: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_del_a s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1196,9 +1476,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1212,34 +1494,46 @@ step s1_r: ROLLBACK; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1251,9 +1545,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1266,33 +1562,45 @@ step s2_upd_a_data: step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1304,9 +1612,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1320,34 +1630,46 @@ step s1_r: ROLLBACK; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_del_a s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1359,9 +1681,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1374,32 +1698,44 @@ step s2_del_a: step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_del_a: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_del_a s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1411,9 +1747,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1427,34 +1765,46 @@ step s1_r: ROLLBACK; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1467,9 +1817,11 @@ step s1_upd_a_tob: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1483,34 +1835,46 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-c = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +key-c|val-c-s1 +(2 rows) -key-b val-a-s1-tobs1 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1523,9 +1887,11 @@ step s1_upd_a_tob: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1540,35 +1906,47 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-c|val-c-s1 +(2 rows) -key-a val-a-s1-ups2 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_b_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1581,9 +1959,11 @@ step s1_upd_a_tob: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-b: f s2: NOTICE: upd: text key-c = text key-b: f step s2_upd_b_data: @@ -1593,35 +1973,47 @@ step s2_upd_b_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key|data +---+---- +(0 rows) step s1_c: COMMIT; step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +key-c|val-c-s1 +(2 rows) -key-b val-a-s1-tobs1 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_all_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1634,9 +2026,11 @@ step s1_upd_a_tob: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a <> text mismatch: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_all_data: @@ -1656,16 +2050,20 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-b,val-a-s1-tobs1) new: (key-b,val-a-s1-tobs1-ups2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-c,val-c-s1) new: (key-c,val-c-s1-ups2) step s2_upd_all_data: <... completed> -key data +key |data +-----+------------------- +key-b|val-a-s1-tobs1-ups2 +key-c|val-c-s1-ups2 +(2 rows) -key-b val-a-s1-tobs1-ups2 -key-c val-c-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------- +key-b|val-a-s1-tobs1-ups2 +key-c|val-c-s1-ups2 +(2 rows) -key-b val-a-s1-tobs1-ups2 -key-c val-c-s1-ups2 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1673,21 +2071,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -1700,9 +2106,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1715,13 +2123,17 @@ step s2_upd_a_data: step s1_c: COMMIT; s2: NOTICE: upd: text key-c = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1729,21 +2141,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -1756,9 +2176,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1773,35 +2195,47 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-c|val-c-s1 +(2 rows) -key-a val-a-s1-ups2 -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_a_d s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_del_a s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -1814,9 +2248,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1829,33 +2265,45 @@ step s2_del_a: step s1_c: COMMIT; s2: NOTICE: upd: text key-c = text key-a: f step s2_del_a: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_a_d s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_del_a s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -1868,9 +2316,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1885,14 +2335,18 @@ s2: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (k s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_b s1_b_rc s2_b_rc s1_ins_a s1_upd_b_data s2_upd_b_data s1_del_b s1_upd_a_tob s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1904,23 +2358,31 @@ step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH R s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: <NULL> new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-b = text key-b: t s1: NOTICE: upk: text val-b-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-b,val-b-s1) new: (key-b,val-b-s1-ups1) @@ -1933,9 +2395,11 @@ step s1_upd_b_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-b|val-b-s1-ups1 +(1 row) -key-b val-b-s1-ups1 s2: NOTICE: upd: text key-b = text key-b: t s2: NOTICE: upk: text val-b-s1 <> text mismatch: t step s2_upd_b_data: @@ -1957,9 +2421,11 @@ step s1_del_b: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+------------- +key-b|val-b-s1-ups1 +(1 row) -key-b val-b-s1-ups1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1971,38 +2437,52 @@ step s1_upd_a_tob: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 step s1_c: COMMIT; step s2_upd_b_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -2015,9 +2495,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2032,30 +2514,40 @@ step s2_upd_a_data: <... completed> ERROR: could not serialize access due to concurrent update step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -2068,9 +2560,11 @@ step s1_upd_a_data: noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2085,15 +2579,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -2101,21 +2599,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -2128,9 +2634,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2145,9 +2653,11 @@ step s2_upd_a_data: <... completed> ERROR: could not serialize access due to concurrent delete step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -2155,21 +2665,29 @@ step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: <NULL> @@ -2182,9 +2700,11 @@ step s1_del_a: noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2199,12 +2719,16 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (k s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 diff --git a/src/test/isolation/expected/eval-plan-qual.out b/src/test/isolation/expected/eval-plan-qual.out index df8fa8b0a5..d9063500d3 100644 --- a/src/test/isolation/expected/eval-plan-qual.out +++ b/src/test/isolation/expected/eval-plan-qual.out @@ -2,261 +2,353 @@ Parsed test spec with 3 sessions starting permutation: wx1 wx2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step c1: COMMIT; step wx2: <... completed> -balance +balance +------- + 850 +(1 row) -850 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 850 +savings | 600 +(2 rows) -checking 850 -savings 600 starting permutation: wy1 wy2 c1 c2 read step wy1: UPDATE accounts SET balance = balance + 500 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1100 +(1 row) -1100 step wy2: UPDATE accounts SET balance = balance + 1000 WHERE accountid = 'checking' AND balance < 1000 RETURNING balance; <waiting ...> step c1: COMMIT; step wy2: <... completed> -balance +balance +------- +(0 rows) step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1100 +savings | 600 +(2 rows) -checking 1100 -savings 600 starting permutation: wx1 wx2 r1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step r1: ROLLBACK; step wx2: <... completed> -balance +balance +------- + 1050 +(1 row) -1050 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wy1 wy2 r1 c2 read step wy1: UPDATE accounts SET balance = balance + 500 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1100 +(1 row) -1100 step wy2: UPDATE accounts SET balance = balance + 1000 WHERE accountid = 'checking' AND balance < 1000 RETURNING balance; <waiting ...> step r1: ROLLBACK; step wy2: <... completed> -balance +balance +------- + 1600 +(1 row) -1600 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1600 +savings | 600 +(2 rows) -checking 1600 -savings 600 starting permutation: wx1 d1 wx2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step c1: COMMIT; step wx2: <... completed> -balance +balance +------- +(0 rows) step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: wx2 d1 c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step c2: COMMIT; step d1: <... completed> -balance +balance +------- + 1050 +(1 row) -1050 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: wx2 wx2 d1 c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1500 +(1 row) -1500 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step c2: COMMIT; step d1: <... completed> -balance +balance +------- +(0 rows) step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1500 +savings | 600 +(2 rows) -checking 1500 -savings 600 starting permutation: wx2 d2 d1 c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step d2: DELETE FROM accounts WHERE accountid = 'checking'; step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step c2: COMMIT; step d1: <... completed> -balance +balance +------- +(0 rows) step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: wx1 d1 wx2 r1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step r1: ROLLBACK; step wx2: <... completed> -balance +balance +------- + 1050 +(1 row) -1050 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wx2 d1 r2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step r2: ROLLBACK; step d1: <... completed> -balance +balance +------- + 600 +(1 row) -600 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: wx2 wx2 d1 r2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1500 +(1 row) -1500 step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step r2: ROLLBACK; step d1: <... completed> -balance +balance +------- + 600 +(1 row) -600 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: wx2 d2 d1 r2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step d2: DELETE FROM accounts WHERE accountid = 'checking'; step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; <waiting ...> step r2: ROLLBACK; step d1: <... completed> -balance +balance +------- + 600 +(1 row) -600 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: d1 wx2 c1 c2 read step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; -balance +balance +------- + 600 +(1 row) -600 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step c1: COMMIT; step wx2: <... completed> -balance +balance +------- +(0 rows) step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +savings | 600 +(1 row) -savings 600 starting permutation: d1 wx2 r1 c2 read step d1: DELETE FROM accounts WHERE accountid = 'checking' AND balance < 1500 RETURNING balance; -balance +balance +------- + 600 +(1 row) -600 step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; <waiting ...> step r1: ROLLBACK; step wx2: <... completed> -balance +balance +------- + 1050 +(1 row) -1050 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wnested2 c1 c2 read s2: NOTICE: upid: text checking = text checking: t @@ -279,20 +371,26 @@ step wnested2: step c1: COMMIT; step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | -600 +savings | 600 +(2 rows) -checking -600 -savings 600 starting permutation: wx1 wxext1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t s2: NOTICE: lock_id: text checking = text checking: t @@ -322,24 +420,32 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | -800 +savings | 600 +(2 rows) -checking -800 -savings 600 starting permutation: wx1 wx1 wxext1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 200 +(1 row) -200 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t s2: NOTICE: lock_id: text checking = text checking: t @@ -365,28 +471,38 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 200 +savings | 600 +(2 rows) -checking 200 -savings 600 starting permutation: wx1 wx1 wxext1 wxext1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 200 +(1 row) -200 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 200 +(1 row) -200 s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t s2: NOTICE: lock_id: text checking = text checking: t @@ -411,24 +527,32 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 200 +savings | 600 +(2 rows) -checking 200 -savings 600 starting permutation: wx1 wxext1 wxext1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step wxext1: UPDATE accounts_ext SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 200 +(1 row) -200 s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t s2: NOTICE: lock_id: text checking = text checking: t @@ -453,16 +577,20 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 400 +savings | 600 +(2 rows) -checking 400 -savings 600 starting permutation: wx1 tocds1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step tocds1: UPDATE accounts SET accountid = 'cds' WHERE accountid = 'checking'; s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t @@ -486,16 +614,20 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +cds | 400 +savings | 600 +(2 rows) -cds 400 -savings 600 starting permutation: wx1 tocdsext1 wnested2 c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step tocdsext1: UPDATE accounts_ext SET accountid = 'cds' WHERE accountid = 'checking'; s2: NOTICE: upid: text checking = text checking: t s2: NOTICE: up: numeric 600 > numeric 200.0: t @@ -520,77 +652,99 @@ s2: NOTICE: upid: text savings = text checking: f step wnested2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 400 +savings | 600 +(2 rows) -checking 400 -savings 600 starting permutation: wx1 updwcte c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step updwcte: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHERE accountid = 'checking' RETURNING *) UPDATE accounts a SET balance = doup.balance + 100 FROM doup RETURNING *; <waiting ...> step c1: COMMIT; step updwcte: <... completed> -accountid balance accountid balance +accountid|balance|accountid|balance +---------+-------+---------+------- +savings | 1600|checking | 1500 +(1 row) -savings 1600 checking 1500 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1500 +savings | 1600 +(2 rows) -checking 1500 -savings 1600 starting permutation: wx1 updwctefail c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step updwctefail: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHERE accountid = 'checking' RETURNING *, update_checking(999)) UPDATE accounts a SET balance = doup.balance + 100 FROM doup RETURNING *; <waiting ...> step c1: COMMIT; step updwctefail: <... completed> ERROR: tuple to be updated was already modified by an operation triggered by the current command step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 400 +savings | 600 +(2 rows) -checking 400 -savings 600 starting permutation: wx1 delwcte c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step delwcte: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHERE accountid = 'checking' RETURNING *) DELETE FROM accounts a USING doup RETURNING *; <waiting ...> step c1: COMMIT; step delwcte: <... completed> -accountid balance accountid balance +accountid|balance|accountid|balance +---------+-------+---------+------- +savings | 600|checking | 1500 +(1 row) -savings 600 checking 1500 step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1500 +(1 row) -checking 1500 starting permutation: wx1 delwctefail c1 c2 read step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 400 +(1 row) -400 step delwctefail: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHERE accountid = 'checking' RETURNING *, update_checking(999)) DELETE FROM accounts a USING doup RETURNING *; <waiting ...> step c1: COMMIT; step delwctefail: <... completed> ERROR: tuple to be deleted was already modified by an operation triggered by the current command step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 400 +savings | 600 +(2 rows) -checking 400 -savings 600 starting permutation: upsert1 upsert2 c1 c2 read step upsert1: @@ -613,32 +767,38 @@ step c1: COMMIT; step upsert2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 2334 +(2 rows) -checking 600 -savings 2334 starting permutation: readp1 writep1 readp2 c1 c2 step readp1: SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; -tableoid ctid a b c - -c1 (0,1) 0 0 0 -c1 (0,4) 0 1 0 -c2 (0,1) 1 0 0 -c2 (0,4) 1 1 0 -c3 (0,1) 2 0 0 -c3 (0,4) 2 1 0 +tableoid|ctid |a|b|c +--------+-----+-+-+- +c1 |(0,1)|0|0|0 +c1 |(0,4)|0|1|0 +c2 |(0,1)|1|0|0 +c2 |(0,4)|1|1|0 +c3 |(0,1)|2|0|0 +c3 |(0,4)|2|1|0 +(6 rows) + step writep1: UPDATE p SET b = -1 WHERE a = 1 AND b = 1 AND c = 0; step readp2: SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; <waiting ...> step c1: COMMIT; step readp2: <... completed> -tableoid ctid a b c +tableoid|ctid |a|b|c +--------+-----+-+-+- +c1 |(0,1)|0|0|0 +c1 |(0,4)|0|1|0 +c2 |(0,1)|1|0|0 +c3 |(0,1)|2|0|0 +c3 |(0,4)|2|1|0 +(5 rows) -c1 (0,1) 0 0 0 -c1 (0,4) 0 1 0 -c2 (0,1) 1 0 0 -c3 (0,1) 2 0 0 -c3 (0,4) 2 1 0 step c2: COMMIT; starting permutation: writep2 returningp1 c1 c2 @@ -649,28 +809,30 @@ step returningp1: <waiting ...> step c1: COMMIT; step returningp1: <... completed> -a b c - -1 0 0 -1 0 1 -1 0 2 -1 -1 0 -1 1 1 -1 1 2 -1 -2 0 -1 2 1 -1 2 2 -1 -3 0 -2 0 0 -2 0 1 -2 0 2 -2 1 0 -2 1 1 -2 1 2 -2 2 0 -2 2 1 -2 2 2 -2 3 0 +a| b|c +-+--+- +1| 0|0 +1| 0|1 +1| 0|2 +1|-1|0 +1| 1|1 +1| 1|2 +1|-2|0 +1| 2|1 +1| 2|2 +1|-3|0 +2| 0|0 +2| 0|1 +2| 0|2 +2| 1|0 +2| 1|1 +2| 1|2 +2| 2|0 +2| 2|1 +2| 2|2 +2| 3|0 +(20 rows) + step c2: COMMIT; starting permutation: writep3a writep3b c1 c2 @@ -682,9 +844,11 @@ step c2: COMMIT; starting permutation: wx2 partiallock c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step partiallock: SELECT * FROM accounts a1, accounts a2 WHERE a1.accountid = a2.accountid @@ -692,22 +856,28 @@ step partiallock: <waiting ...> step c2: COMMIT; step partiallock: <... completed> -accountid balance accountid balance +accountid|balance|accountid|balance +---------+-------+---------+------- +checking | 1050|checking | 600 +savings | 600|savings | 600 +(2 rows) -checking 1050 checking 600 -savings 600 savings 600 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wx2 lockwithvalues c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking' RETURNING balance; -balance +balance +------- + 1050 +(1 row) -1050 step lockwithvalues: -- Reference rowmark column that differs in type from targetlist at some attno. -- See CAHU7rYZo_C4ULsAx_LAj8az9zqgrD8WDd4hTegDTMM1LMqrBsg@mail.gmail.com @@ -717,16 +887,20 @@ step lockwithvalues: <waiting ...> step c2: COMMIT; step lockwithvalues: <... completed> -accountid balance id +accountid|balance|id +---------+-------+-------- +checking | 1050|checking +savings | 600|savings +(2 rows) -checking 1050 checking -savings 600 savings step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wx2_ext partiallock_ext c2 c1 read_ext step wx2_ext: UPDATE accounts_ext SET balance = balance + 450; @@ -737,16 +911,20 @@ step partiallock_ext: <waiting ...> step c2: COMMIT; step partiallock_ext: <... completed> -accountid balance other newcol newcol2 accountid balance other newcol newcol2 +accountid|balance|other|newcol|newcol2|accountid|balance|other|newcol|newcol2 +---------+-------+-----+------+-------+---------+-------+-----+------+------- +checking | 1050|other| 42| |checking | 600|other| 42| +savings | 1150| | 42| |savings | 700| | 42| +(2 rows) -checking 1050 other 42 checking 600 other 42 -savings 1150 42 savings 700 42 step c1: COMMIT; step read_ext: SELECT * FROM accounts_ext ORDER BY accountid; -accountid balance other newcol newcol2 +accountid|balance|other|newcol|newcol2 +---------+-------+-----+------+------- +checking | 1050|other| 42| +savings | 1150| | 42| +(2 rows) -checking 1050 other 42 -savings 1150 42 starting permutation: updateforss readforss c1 c2 step updateforss: @@ -762,9 +940,11 @@ step readforss: <waiting ...> step c1: COMMIT; step readforss: <... completed> -ta_id ta_value tb_row +ta_id|ta_value |tb_row +-----+--------------+--------------- + 1|newTableAValue|(1,tableBValue) +(1 row) -1 newTableAValue (1,tableBValue) step c2: COMMIT; starting permutation: updateforcip updateforcip2 c1 c2 read_a @@ -778,9 +958,11 @@ step c1: COMMIT; step updateforcip2: <... completed> step c2: COMMIT; step read_a: SELECT * FROM table_a ORDER BY id; -id value +id|value +--+-------- + 1|newValue +(1 row) -1 newValue starting permutation: updateforcip updateforcip3 c1 c2 read_a step updateforcip: @@ -794,9 +976,11 @@ step c1: COMMIT; step updateforcip3: <... completed> step c2: COMMIT; step read_a: SELECT * FROM table_a ORDER BY id; -id value +id|value +--+-------- + 1|newValue +(1 row) -1 newValue starting permutation: wrtwcte readwcte c1 c2 step wrtwcte: UPDATE table_a SET value = 'tableAValue2' WHERE id = 1; @@ -815,9 +999,11 @@ step readwcte: step c1: COMMIT; step c2: COMMIT; step readwcte: <... completed> -id value +id|value +--+------------ + 1|tableAValue2 +(1 row) -1 tableAValue2 starting permutation: wrjt selectjoinforupdate c2 c1 step wrjt: UPDATE jointest SET data = 42 WHERE id = 7; @@ -831,25 +1017,29 @@ step selectjoinforupdate: <waiting ...> step c2: COMMIT; step selectjoinforupdate: <... completed> -QUERY PLAN - -LockRows - -> Merge Join - Merge Cond: (a.id = b.id) +QUERY PLAN +---------------------------------------------------------- +LockRows + -> Merge Join + Merge Cond: (a.id = b.id) -> Index Scan using jointest_id_idx on jointest a -> Index Scan using jointest_id_idx on jointest b -id data id data +(5 rows) + +id|data|id|data +--+----+--+---- + 1| 0| 1| 0 + 2| 0| 2| 0 + 3| 0| 3| 0 + 4| 0| 4| 0 + 5| 0| 5| 0 + 6| 0| 6| 0 + 7| 42| 7| 42 + 8| 0| 8| 0 + 9| 0| 9| 0 +10| 0|10| 0 +(10 rows) -1 0 1 0 -2 0 2 0 -3 0 3 0 -4 0 4 0 -5 0 5 0 -6 0 6 0 -7 42 7 42 -8 0 8 0 -9 0 9 0 -10 0 10 0 step c1: COMMIT; starting permutation: wrjt selectresultforupdate c2 c1 @@ -868,27 +1058,33 @@ step selectresultforupdate: <waiting ...> step c2: COMMIT; step selectresultforupdate: <... completed> -x y id value id data - -1 7 1 tableAValue 7 0 -QUERY PLAN - -LockRows - Output: 1, 7, a.id, a.value, jt.id, jt.data, jt.ctid, a.ctid - -> Nested Loop Left Join +x|y|id|value |id|data +-+-+--+-----------+--+---- +1|7| 1|tableAValue| 7| 0 +(1 row) + +QUERY PLAN +-------------------------------------------------------------------- +LockRows + Output: 1, 7, a.id, a.value, jt.id, jt.data, jt.ctid, a.ctid + -> Nested Loop Left Join Output: 1, 7, a.id, a.value, jt.id, jt.data, jt.ctid, a.ctid - -> Nested Loop - Output: jt.id, jt.data, jt.ctid - -> Seq Scan on public.jointest jt - Output: jt.id, jt.data, jt.ctid - Filter: (jt.id = 7) - -> Result - -> Seq Scan on public.table_a a - Output: a.id, a.value, a.ctid - Filter: (a.id = 1) -x y id value id data + -> Nested Loop + Output: jt.id, jt.data, jt.ctid + -> Seq Scan on public.jointest jt + Output: jt.id, jt.data, jt.ctid + Filter: (jt.id = 7) + -> Result + -> Seq Scan on public.table_a a + Output: a.id, a.value, a.ctid + Filter: (a.id = 1) +(13 rows) + +x|y|id|value |id|data +-+-+--+-----------+--+---- +1|7| 1|tableAValue| 7| 42 +(1 row) -1 7 1 tableAValue 7 42 step c1: COMMIT; starting permutation: wrtwcte multireadwcte c1 c2 @@ -902,9 +1098,11 @@ step multireadwcte: step c1: COMMIT; step c2: COMMIT; step multireadwcte: <... completed> -subid id +subid|id +-----+-- + 1| 1 +(1 row) -1 1 starting permutation: simplepartupdate complexpartupdate c1 c2 step simplepartupdate: @@ -922,9 +1120,11 @@ starting permutation: simplepartupdate_route1to2 complexpartupdate_route_err1 c1 step simplepartupdate_route1to2: update parttbl set a = 2 where c = 1 returning *; -a b c +a|b|c +-+-+- +2|1|1 +(1 row) -2 1 1 step complexpartupdate_route_err1: with u as (update another_parttbl set a = 1 returning another_parttbl.*) update parttbl p set a = u.a from u where p.a = u.a and p.c = 1 returning p.*; @@ -938,34 +1138,42 @@ starting permutation: simplepartupdate_noroute complexpartupdate_route c1 c2 step simplepartupdate_noroute: update parttbl set b = 2 where c = 1 returning *; -a b c +a|b|c +-+-+- +1|2|1 +(1 row) -1 2 1 step complexpartupdate_route: with u as (update another_parttbl set a = 1 returning another_parttbl.*) update parttbl p set a = p.b from u where p.a = u.a and p.c = 1 returning p.*; <waiting ...> step c1: COMMIT; step complexpartupdate_route: <... completed> -a b c +a|b|c +-+-+- +2|2|1 +(1 row) -2 2 1 step c2: COMMIT; starting permutation: simplepartupdate_noroute complexpartupdate_doesnt_route c1 c2 step simplepartupdate_noroute: update parttbl set b = 2 where c = 1 returning *; -a b c +a|b|c +-+-+- +1|2|1 +(1 row) -1 2 1 step complexpartupdate_doesnt_route: with u as (update another_parttbl set a = 1 returning another_parttbl.*) update parttbl p set a = 3 - p.b from u where p.a = u.a and p.c = 1 returning p.*; <waiting ...> step c1: COMMIT; step complexpartupdate_doesnt_route: <... completed> -a b c +a|b|c +-+-+- +1|2|1 +(1 row) -1 2 1 step c2: COMMIT; diff --git a/src/test/isolation/expected/fk-partitioned-2.out b/src/test/isolation/expected/fk-partitioned-2.out index 278bec4fdf..8c6c714d05 100644 --- a/src/test/isolation/expected/fk-partitioned-2.out +++ b/src/test/isolation/expected/fk-partitioned-2.out @@ -14,9 +14,11 @@ starting permutation: s1b s1d s2bs s2i s1c s2c step s1b: begin; step s1d: delete from ppk where a = 1; step s2bs: begin isolation level serializable; select 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2i: insert into pfk values (1); <waiting ...> step s1c: commit; step s2i: <... completed> @@ -36,9 +38,11 @@ step s2c: commit; starting permutation: s1b s2bs s1d s2i s1c s2c step s1b: begin; step s2bs: begin isolation level serializable; select 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s1d: delete from ppk where a = 1; step s2i: insert into pfk values (1); <waiting ...> step s1c: commit; @@ -59,9 +63,11 @@ step s1c: commit; starting permutation: s1b s2bs s2i s1d s2c s1c step s1b: begin; step s2bs: begin isolation level serializable; select 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2i: insert into pfk values (1); step s1d: delete from ppk where a = 1; <waiting ...> step s2c: commit; diff --git a/src/test/isolation/expected/freeze-the-dead.out b/src/test/isolation/expected/freeze-the-dead.out index 8e638f132f..88678bd045 100644 --- a/src/test/isolation/expected/freeze-the-dead.out +++ b/src/test/isolation/expected/freeze-the-dead.out @@ -6,13 +6,17 @@ step s2_begin: BEGIN; step s3_begin: BEGIN; step s1_update: UPDATE tab_freeze SET x = x + 1 WHERE id = 3; step s2_key_share: SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; -id +id +-- + 3 +(1 row) -3 step s3_key_share: SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; -id +id +-- + 3 +(1 row) -3 step s1_update: UPDATE tab_freeze SET x = x + 1 WHERE id = 3; step s1_commit: COMMIT; step s2_commit: COMMIT; @@ -24,13 +28,17 @@ step s1_selectone: SELECT * FROM tab_freeze WHERE id = 3; COMMIT; -id name x +id|name|x +--+----+- + 3| 333|2 +(1 row) -3 333 2 step s3_commit: COMMIT; step s2_vacuum: VACUUM FREEZE tab_freeze; step s1_selectall: SELECT * FROM tab_freeze ORDER BY name, id; -id name x +id|name|x +--+----+- + 1| 111|0 + 3| 333|2 +(2 rows) -1 111 0 -3 333 2 diff --git a/src/test/isolation/expected/horizons.out b/src/test/isolation/expected/horizons.out index 07bbc9832c..4150b2dee6 100644 --- a/src/test/isolation/expected/horizons.out +++ b/src/test/isolation/expected/horizons.out @@ -9,31 +9,39 @@ step ll_start: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step pruner_query_plan: EXPLAIN (COSTS OFF) SELECT * FROM horizons_tst ORDER BY data; -QUERY PLAN - +QUERY PLAN +----------------------------------------------------------- Index Only Scan using horizons_tst_data_key on horizons_tst +(1 row) + step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_delete: DELETE FROM horizons_tst; @@ -42,17 +50,21 @@ step pruner_query: EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step ll_commit: COMMIT; step pruner_drop: DROP TABLE horizons_tst; @@ -67,31 +79,39 @@ step ll_start: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step pruner_query_plan: EXPLAIN (COSTS OFF) SELECT * FROM horizons_tst ORDER BY data; -QUERY PLAN - +QUERY PLAN +----------------------------------------------------------- Index Only Scan using horizons_tst_data_key on horizons_tst +(1 row) + step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_delete: DELETE FROM horizons_tst; @@ -100,17 +120,21 @@ step pruner_query: EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 0 +(1 row) -0 step ll_commit: COMMIT; step pruner_drop: DROP TABLE horizons_tst; @@ -125,25 +149,31 @@ step ll_start: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_begin: BEGIN; step pruner_delete: DELETE FROM horizons_tst; @@ -153,17 +183,21 @@ step pruner_query: EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step ll_commit: COMMIT; step pruner_commit: COMMIT; step pruner_drop: @@ -179,25 +213,31 @@ step ll_start: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_delete: DELETE FROM horizons_tst; @@ -209,17 +249,21 @@ step pruner_query: EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step ll_commit: COMMIT; step pruner_drop: DROP TABLE horizons_tst; @@ -234,25 +278,31 @@ step ll_start: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 2 +(1 row) -2 step pruner_delete: DELETE FROM horizons_tst; @@ -264,17 +314,21 @@ step pruner_query: EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 0 +(1 row) -0 step pruner_query: SELECT explain_json($$ EXPLAIN (FORMAT json, BUFFERS, ANALYZE) SELECT * FROM horizons_tst ORDER BY data;$$)->0->'Plan'->'Heap Fetches'; -?column? +?column? +-------- + 0 +(1 row) -0 step ll_commit: COMMIT; step pruner_drop: DROP TABLE horizons_tst; diff --git a/src/test/isolation/expected/inherit-temp.out b/src/test/isolation/expected/inherit-temp.out index edfc8f906c..e6f0f220e8 100644 --- a/src/test/isolation/expected/inherit-temp.out +++ b/src/test/isolation/expected/inherit-temp.out @@ -5,29 +5,37 @@ step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +5 +6 +(4 rows) -1 -2 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_update_p s1_update_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -36,29 +44,37 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_update_p: UPDATE inh_parent SET a = 11 WHERE a = 1; step s1_update_c: UPDATE inh_parent SET a = 13 WHERE a IN (3, 5); step s1_select_p: SELECT a FROM inh_parent; -a + a +-- + 2 +11 + 4 +13 +(4 rows) -2 -11 -4 -13 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a + a +-- + 4 +13 +(2 rows) -4 -13 step s2_select_p: SELECT a FROM inh_parent; -a + a +-- + 2 +11 + 5 + 6 +(4 rows) -2 -11 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_update_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -66,29 +82,37 @@ step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_update_c: UPDATE inh_parent SET a = 15 WHERE a IN (3, 5); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a + a +-- + 1 + 2 + 6 +15 +(4 rows) -1 -2 -6 -15 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a + a +-- + 6 +15 +(2 rows) -6 -15 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_delete_p s1_delete_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -97,25 +121,33 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_delete_p: DELETE FROM inh_parent WHERE a = 2; step s1_delete_c: DELETE FROM inh_parent WHERE a IN (4, 6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +3 +(2 rows) -1 -3 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +(1 row) -3 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +5 +6 +(3 rows) -1 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_delete_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -123,27 +155,35 @@ step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_delete_c: DELETE FROM inh_parent WHERE a IN (4, 6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +5 +(3 rows) -1 -2 -5 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +(1 row) -5 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -151,21 +191,29 @@ step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_truncate_p: TRUNCATE inh_parent; step s1_select_p: SELECT a FROM inh_parent; -a +a +- +(0 rows) step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +(0 rows) step s2_select_p: SELECT a FROM inh_parent; -a +a +- +5 +6 +(2 rows) -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -173,20 +221,28 @@ step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_truncate_p: TRUNCATE inh_parent; step s1_select_p: SELECT a FROM inh_parent; -a +a +- +3 +4 +(2 rows) -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +(0 rows) step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +(0 rows) starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_p s1_commit @@ -198,10 +254,12 @@ step s1_truncate_p: TRUNCATE inh_parent; step s2_select_p: SELECT a FROM inh_parent; <waiting ...> step s1_commit: COMMIT; step s2_select_p: <... completed> -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_c s1_commit step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -210,8 +268,10 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_begin: BEGIN; step s1_truncate_p: TRUNCATE inh_parent; step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 step s1_commit: COMMIT; diff --git a/src/test/isolation/expected/insert-conflict-do-nothing-2.out b/src/test/isolation/expected/insert-conflict-do-nothing-2.out index c90002fd02..22d41d33ed 100644 --- a/src/test/isolation/expected/insert-conflict-do-nothing-2.out +++ b/src/test/isolation/expected/insert-conflict-do-nothing-2.out @@ -8,9 +8,11 @@ step c1: COMMIT; step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: beginrr1 beginrr2 donothing2 c2 donothing1 c1 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -20,9 +22,11 @@ step c2: COMMIT; step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: beginrr1 beginrr2 donothing1 donothing2 c1 c2 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -34,9 +38,11 @@ step donothing2: <... completed> ERROR: could not serialize access due to concurrent update step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: beginrr1 beginrr2 donothing2 donothing1 c2 c1 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -48,9 +54,11 @@ step donothing1: <... completed> ERROR: could not serialize access due to concurrent update step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: begins1 begins2 donothing1 c1 donothing2 c2 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -60,9 +68,11 @@ step c1: COMMIT; step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: begins1 begins2 donothing2 c2 donothing1 c1 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -72,9 +82,11 @@ step c2: COMMIT; step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: begins1 begins2 donothing1 donothing2 c1 c2 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -86,9 +98,11 @@ step donothing2: <... completed> ERROR: could not serialize access due to concurrent update step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: begins1 begins2 donothing2 donothing1 c2 c1 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -100,6 +114,8 @@ step donothing1: <... completed> ERROR: could not serialize access due to concurrent update step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 diff --git a/src/test/isolation/expected/insert-conflict-do-nothing.out b/src/test/isolation/expected/insert-conflict-do-nothing.out index 0a0958f034..cadf46d065 100644 --- a/src/test/isolation/expected/insert-conflict-do-nothing.out +++ b/src/test/isolation/expected/insert-conflict-do-nothing.out @@ -6,9 +6,11 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2') ON CONFLICT step c1: COMMIT; step donothing2: <... completed> step select2: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 step c2: COMMIT; starting permutation: donothing1 donothing2 a1 select2 c2 @@ -17,7 +19,9 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2') ON CONFLICT step a1: ABORT; step donothing2: <... completed> step select2: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 step c2: COMMIT; diff --git a/src/test/isolation/expected/insert-conflict-do-update-2.out b/src/test/isolation/expected/insert-conflict-do-update-2.out index 05fb06f8d8..7acd1aef16 100644 --- a/src/test/isolation/expected/insert-conflict-do-update-2.out +++ b/src/test/isolation/expected/insert-conflict-do-update-2.out @@ -6,9 +6,11 @@ step insert2: INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CO step c1: COMMIT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key payload +key |payload +------+-------------------------- +FOOFOO|insert1 updated by insert2 +(1 row) -FOOFOO insert1 updated by insert2 step c2: COMMIT; starting permutation: insert1 insert2 a1 select2 c2 @@ -17,7 +19,9 @@ step insert2: INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CO step a1: ABORT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key payload +key |payload +------+------- +FOOFOO|insert2 +(1 row) -FOOFOO insert2 step c2: COMMIT; diff --git a/src/test/isolation/expected/insert-conflict-do-update-3.out b/src/test/isolation/expected/insert-conflict-do-update-3.out index 6600410618..2d7e0b8f18 100644 --- a/src/test/isolation/expected/insert-conflict-do-update-3.out +++ b/src/test/isolation/expected/insert-conflict-do-update-3.out @@ -12,15 +12,19 @@ step insert1: SELECT * FROM colors ORDER BY key; <waiting ...> step c2: COMMIT; step insert1: <... completed> -key color is_active +key|color|is_active +---+-----+--------- + 1|Red |f + 2|Green|f + 3|Blue |f +(3 rows) -1 Red f -2 Green f -3 Blue f step select1surprise: SELECT * FROM colors ORDER BY key; -key color is_active +key|color|is_active +---+-----+--------- + 1|Brown|t + 2|Green|f + 3|Blue |f +(3 rows) -1 Brown t -2 Green f -3 Blue f step c1: COMMIT; diff --git a/src/test/isolation/expected/insert-conflict-do-update.out b/src/test/isolation/expected/insert-conflict-do-update.out index a634918784..16c384c836 100644 --- a/src/test/isolation/expected/insert-conflict-do-update.out +++ b/src/test/isolation/expected/insert-conflict-do-update.out @@ -6,9 +6,11 @@ step insert2: INSERT INTO upsert(key, val) VALUES(1, 'insert2') ON CONFLICT (key step c1: COMMIT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key val +key|val +---+-------------------------- + 1|insert1 updated by insert2 +(1 row) -1 insert1 updated by insert2 step c2: COMMIT; starting permutation: insert1 insert2 a1 select2 c2 @@ -17,7 +19,9 @@ step insert2: INSERT INTO upsert(key, val) VALUES(1, 'insert2') ON CONFLICT (key step a1: ABORT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key val +key|val +---+------- + 1|insert2 +(1 row) -1 insert2 step c2: COMMIT; diff --git a/src/test/isolation/expected/insert-conflict-specconflict.out b/src/test/isolation/expected/insert-conflict-specconflict.out index 8d319296dd..bb8f950f2c 100644 --- a/src/test/isolation/expected/insert-conflict-specconflict.out +++ b/src/test/isolation/expected/insert-conflict-specconflict.out @@ -2,16 +2,20 @@ Parsed test spec with 3 sessions starting permutation: controller_locks controller_show s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_2_2 controller_show controller_unlock_1_2 controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock - - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) + step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 3 @@ -20,66 +24,90 @@ s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock_123(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; <waiting ...> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s2 +(1 row) -k1 inserted s2 step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s2 with conflict update s1 +(1 row) -k1 inserted s2 with conflict update s1 starting permutation: controller_locks controller_show s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_1_2 controller_show controller_unlock_2_2 controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock - - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) + step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 3 @@ -88,66 +116,90 @@ s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock_123(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; <waiting ...> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s1 +(1 row) -k1 inserted s1 step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s1 with conflict update s2 +(1 row) -k1 inserted s1 with conflict update s2 starting permutation: controller_locks controller_show s1_insert_toast s2_insert_toast controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_1_2 controller_show_count controller_unlock_2_2 controller_show_count step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock - - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) + step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) s1: NOTICE: blurt_and_lock_123() called for k2 in session 1 s1: NOTICE: acquiring advisory lock on 3 @@ -156,66 +208,90 @@ s2: NOTICE: blurt_and_lock_123() called for k2 in session 2 s2: NOTICE: acquiring advisory lock on 3 step s2_insert_toast: INSERT INTO upserttest VALUES('k2', ctoast_large_val()) ON CONFLICT DO NOTHING; <waiting ...> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k2 in session 1 s1: NOTICE: acquiring advisory lock on 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k2 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s1_insert_toast: <... completed> step controller_show_count: SELECT COUNT(*) FROM upserttest; -count +count +----- + 1 +(1 row) -1 step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k2 in session 2 s2: NOTICE: acquiring advisory lock on 2 s2: NOTICE: blurt_and_lock_123() called for k2 in session 2 s2: NOTICE: acquiring advisory lock on 2 step s2_insert_toast: <... completed> step controller_show_count: SELECT COUNT(*) FROM upserttest; -count +count +----- + 1 +(1 row) -1 starting permutation: controller_locks controller_show s1_begin s2_begin s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_1_2 controller_show controller_unlock_2_2 controller_show s1_commit controller_show s2_commit controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock - - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) + step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step s1_begin: BEGIN; step s2_begin: BEGIN; @@ -226,81 +302,111 @@ s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock_123(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; <waiting ...> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step s1_commit: COMMIT; s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s1 +(1 row) -k1 inserted s1 step s2_commit: COMMIT; step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s1 with conflict update s2 +(1 row) -k1 inserted s1 with conflict update s2 starting permutation: s1_create_non_unique_index s1_confirm_index_order controller_locks controller_show s2_begin s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_lock_2_4 controller_unlock_2_2 controller_show controller_unlock_1_2 controller_print_speculative_locks controller_unlock_2_4 s2_noop controller_print_speculative_locks s2_commit s1_noop controller_show controller_print_speculative_locks step s1_create_non_unique_index: CREATE INDEX upserttest_key_idx ON upserttest((blurt_and_lock_4(key))); step s1_confirm_index_order: SELECT 'upserttest_key_uniq_idx'::regclass::int8 < 'upserttest_key_idx'::regclass::int8; -?column? +?column? +-------- +t +(1 row) -t step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock - - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) + step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step s2_begin: BEGIN; s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 @@ -310,48 +416,68 @@ s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock_123(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; <waiting ...> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_123() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_lock_2_4: SELECT pg_advisory_lock(2, 4); pg_advisory_lock +---------------- + +(1 row) - step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: blurt_and_lock_4() called for k1 in session 2 s2: NOTICE: acquiring advisory lock on 4 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_4() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 4 s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 @@ -367,16 +493,20 @@ step controller_print_speculative_locks: AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%' ORDER BY 1, 2, 3, 4; -application_namelocktype mode granted +application_name |locktype |mode |granted +-----------------------------------------+-------------+-------------+------- +isolation/insert-conflict-specconflict-s1|spectoken |ShareLock |f +isolation/insert-conflict-specconflict-s1|transactionid|ExclusiveLock|t +isolation/insert-conflict-specconflict-s2|spectoken |ExclusiveLock|t +isolation/insert-conflict-specconflict-s2|transactionid|ExclusiveLock|t +(4 rows) -isolation/insert-conflict-specconflict-s1spectoken ShareLock f -isolation/insert-conflict-specconflict-s1transactionid ExclusiveLock t -isolation/insert-conflict-specconflict-s2spectoken ExclusiveLock t -isolation/insert-conflict-specconflict-s2transactionid ExclusiveLock t step controller_unlock_2_4: SELECT pg_advisory_unlock(2, 4); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step s2_upsert: <... completed> @@ -390,20 +520,24 @@ step controller_print_speculative_locks: AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%' ORDER BY 1, 2, 3, 4; -application_namelocktype mode granted +application_name |locktype |mode |granted +-----------------------------------------+-------------+-------------+------- +isolation/insert-conflict-specconflict-s1|transactionid|ExclusiveLock|t +isolation/insert-conflict-specconflict-s1|transactionid|ShareLock |f +isolation/insert-conflict-specconflict-s2|transactionid|ExclusiveLock|t +(3 rows) -isolation/insert-conflict-specconflict-s1transactionid ExclusiveLock t -isolation/insert-conflict-specconflict-s1transactionid ShareLock f -isolation/insert-conflict-specconflict-s2transactionid ExclusiveLock t step s2_commit: COMMIT; s1: NOTICE: blurt_and_lock_123() called for k1 in session 1 s1: NOTICE: acquiring advisory lock on 2 step s1_upsert: <... completed> step s1_noop: step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s2 with conflict update s1 +(1 row) -k1 inserted s2 with conflict update s1 step controller_print_speculative_locks: SELECT pa.application_name, locktype, mode, granted FROM pg_locks pl JOIN pg_stat_activity pa USING (pid) @@ -413,5 +547,7 @@ step controller_print_speculative_locks: AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%' ORDER BY 1, 2, 3, 4; -application_namelocktype mode granted +application_name|locktype|mode|granted +----------------+--------+----+------- +(0 rows) diff --git a/src/test/isolation/expected/lock-committed-keyupdate.out b/src/test/isolation/expected/lock-committed-keyupdate.out index 2f13a19b9a..7de6bc6860 100644 --- a/src/test/isolation/expected/lock-committed-keyupdate.out +++ b/src/test/isolation/expected/lock-committed-keyupdate.out @@ -5,492 +5,666 @@ step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s2l: <... completed> ERROR: could not serialize access due to concurrent update step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - diff --git a/src/test/isolation/expected/lock-committed-update.out b/src/test/isolation/expected/lock-committed-update.out index 88a6f23eab..84b9ce7509 100644 --- a/src/test/isolation/expected/lock-committed-update.out +++ b/src/test/isolation/expected/lock-committed-update.out @@ -5,663 +5,927 @@ step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; <waiting ...> step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - diff --git a/src/test/isolation/expected/lock-update-delete.out b/src/test/isolation/expected/lock-update-delete.out index 3aa12539e2..f75e25f74b 100644 --- a/src/test/isolation/expected/lock-update-delete.out +++ b/src/test/isolation/expected/lock-update-delete.out @@ -2,114 +2,152 @@ Parsed test spec with 2 sessions starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2r: ROLLBACK; starting permutation: s2b s1l s2u s2_blocker1 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -117,16 +155,22 @@ step s2_blocker1: DELETE FROM foo; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker2 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -134,16 +178,22 @@ step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker3 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -151,17 +201,23 @@ step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker1 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -169,17 +225,23 @@ step s2_blocker1: DELETE FROM foo; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -187,17 +249,23 @@ step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -205,9 +273,13 @@ step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 diff --git a/src/test/isolation/expected/lock-update-delete_1.out b/src/test/isolation/expected/lock-update-delete_1.out index 77adde718d..c602ac8ac4 100644 --- a/src/test/isolation/expected/lock-update-delete_1.out +++ b/src/test/isolation/expected/lock-update-delete_1.out @@ -2,112 +2,146 @@ Parsed test spec with 2 sessions starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2r: ROLLBACK; starting permutation: s2b s1l s2u s2_blocker1 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -115,15 +149,19 @@ step s2_blocker1: DELETE FROM foo; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker2 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -131,15 +169,19 @@ step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker3 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -147,17 +189,23 @@ step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker1 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -165,17 +213,23 @@ step s2_blocker1: DELETE FROM foo; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -183,17 +237,23 @@ step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; <waiting ...> step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -201,9 +261,13 @@ step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 diff --git a/src/test/isolation/expected/lock-update-traversal.out b/src/test/isolation/expected/lock-update-traversal.out index e4e6405757..6d6a97d46e 100644 --- a/src/test/isolation/expected/lock-update-traversal.out +++ b/src/test/isolation/expected/lock-update-traversal.out @@ -4,14 +4,18 @@ starting permutation: s1b s2b s1s s2u s1l s2c s2d1 s1c step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d1: DELETE FROM foo WHERE key = 1; <waiting ...> step s1c: COMMIT; @@ -21,14 +25,18 @@ starting permutation: s1b s2b s1s s2u s1l s2c s2d2 s1c step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d2: UPDATE foo SET key = 3 WHERE key = 1; <waiting ...> step s1c: COMMIT; @@ -38,14 +46,18 @@ starting permutation: s1b s2b s1s s2u s1l s2c s2d3 s1c step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d3: UPDATE foo SET value = 3 WHERE key = 1; step s1c: COMMIT; diff --git a/src/test/isolation/expected/multiple-cic.out b/src/test/isolation/expected/multiple-cic.out index e41e04a480..7a0f326cdb 100644 --- a/src/test/isolation/expected/multiple-cic.out +++ b/src/test/isolation/expected/multiple-cic.out @@ -3,8 +3,10 @@ Parsed test spec with 2 sessions starting permutation: s2l s1i s2i step s2l: SELECT pg_advisory_lock(281457); pg_advisory_lock +---------------- + +(1 row) - step s1i: CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id) WHERE lck_shr(281457); @@ -15,6 +17,8 @@ step s2i: <waiting ...> step s1i: <... completed> step s2i: <... completed> -unlck +unlck +----- +t +(1 row) -t diff --git a/src/test/isolation/expected/multiple-row-versions.out b/src/test/isolation/expected/multiple-row-versions.out index d6a0c427fc..79f492ea42 100644 --- a/src/test/isolation/expected/multiple-row-versions.out +++ b/src/test/isolation/expected/multiple-row-versions.out @@ -2,21 +2,27 @@ Parsed test spec with 4 sessions starting permutation: rx1 wx2 c2 wx3 ry3 wy4 rz4 c4 c3 wz1 c1 step rx1: SELECT * FROM t WHERE id = 1000000; -id txt + id|txt +-------+--- +1000000| +(1 row) -1000000 step wx2: UPDATE t SET txt = 'b' WHERE id = 1000000; step c2: COMMIT; step wx3: UPDATE t SET txt = 'c' WHERE id = 1000000; step ry3: SELECT * FROM t WHERE id = 500000; -id txt + id|txt +------+--- +500000| +(1 row) -500000 step wy4: UPDATE t SET txt = 'd' WHERE id = 500000; step rz4: SELECT * FROM t WHERE id = 1; -id txt +id|txt +--+--- + 1| +(1 row) -1 step c4: COMMIT; step c3: COMMIT; step wz1: UPDATE t SET txt = 'a' WHERE id = 1; diff --git a/src/test/isolation/expected/multixact-no-deadlock.out b/src/test/isolation/expected/multixact-no-deadlock.out index 5ba2e7818e..4b9ce7bfc3 100644 --- a/src/test/isolation/expected/multixact-no-deadlock.out +++ b/src/test/isolation/expected/multixact-no-deadlock.out @@ -2,23 +2,31 @@ Parsed test spec with 3 sessions starting permutation: s1lock s2lock s1svpt s3lock s1lock2 s2c s1c s3c step s1lock: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s2lock: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s1svpt: SAVEPOINT foo; step s3lock: SELECT * FROM justthis FOR UPDATE; <waiting ...> step s1lock2: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s2c: COMMIT; step s1c: COMMIT; step s3lock: <... completed> -value +value +----- + 1 +(1 row) -1 step s3c: COMMIT; diff --git a/src/test/isolation/expected/multixact-no-forget.out b/src/test/isolation/expected/multixact-no-forget.out index 38466bf837..ce06b38407 100644 --- a/src/test/isolation/expected/multixact-no-forget.out +++ b/src/test/isolation/expected/multixact-no-forget.out @@ -2,129 +2,167 @@ Parsed test spec with 3 sessions starting permutation: s1_show s1_commit s2_commit step s1_show: SELECT current_setting('default_transaction_isolation') <> 'read committed'; -?column? +?column? +-------- +f +(1 row) -f step s1_commit: COMMIT; step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_forkeyshr s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_fornokeyupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; <waiting ...> step s2_commit: COMMIT; step s3_fornokeyupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s2_abort s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 1 +(1 row) -1 starting permutation: s1_lock s2_update s2_commit s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s1_commit s3_forupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> step s2_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 diff --git a/src/test/isolation/expected/multixact-no-forget_1.out b/src/test/isolation/expected/multixact-no-forget_1.out index 205a40099c..f15a1e1809 100644 --- a/src/test/isolation/expected/multixact-no-forget_1.out +++ b/src/test/isolation/expected/multixact-no-forget_1.out @@ -2,82 +2,106 @@ Parsed test spec with 3 sessions starting permutation: s1_show s1_commit s2_commit step s1_show: SELECT current_setting('default_transaction_isolation') <> 'read committed'; -?column? +?column? +-------- +t +(1 row) -t step s1_commit: COMMIT; step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_forkeyshr s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_fornokeyupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; <waiting ...> @@ -87,37 +111,47 @@ ERROR: could not serialize access due to concurrent update starting permutation: s1_lock s2_update s2_abort s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 1 +(1 row) -1 starting permutation: s1_lock s2_update s2_commit s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s1_commit s3_forupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> diff --git a/src/test/isolation/expected/nowait-2.out b/src/test/isolation/expected/nowait-2.out index 6e24bbbf26..ba18fa77d4 100644 --- a/src/test/isolation/expected/nowait-2.out +++ b/src/test/isolation/expected/nowait-2.out @@ -2,13 +2,17 @@ Parsed test spec with 2 sessions starting permutation: s1a s2a s2b s1b s2c step s1a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -16,13 +20,17 @@ step s2c: COMMIT; starting permutation: s2a s1a s2b s1b s2c step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -30,13 +38,17 @@ step s2c: COMMIT; starting permutation: s2a s2b s1a s1b s2c step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR SHARE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; diff --git a/src/test/isolation/expected/nowait-3.out b/src/test/isolation/expected/nowait-3.out index 844464654a..19a5b680bc 100644 --- a/src/test/isolation/expected/nowait-3.out +++ b/src/test/isolation/expected/nowait-3.out @@ -2,16 +2,20 @@ Parsed test spec with 3 sessions starting permutation: s1a s2a s3a s1b s2b s3b step s1a: SELECT * FROM foo FOR UPDATE; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE; <waiting ...> step s3a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; step s2a: <... completed> -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; step s3b: COMMIT; diff --git a/src/test/isolation/expected/nowait-4.out b/src/test/isolation/expected/nowait-4.out index c1db66581b..be0edbdd21 100644 --- a/src/test/isolation/expected/nowait-4.out +++ b/src/test/isolation/expected/nowait-4.out @@ -3,16 +3,20 @@ Parsed test spec with 2 sessions starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; <waiting ...> step s2b: UPDATE foo SET data = data; step s2c: BEGIN; step s2d: UPDATE foo SET data = data; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; diff --git a/src/test/isolation/expected/nowait-4_1.out b/src/test/isolation/expected/nowait-4_1.out index 5fa6b3453a..05e2fcf2f6 100644 --- a/src/test/isolation/expected/nowait-4_1.out +++ b/src/test/isolation/expected/nowait-4_1.out @@ -3,16 +3,20 @@ Parsed test spec with 2 sessions starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; <waiting ...> step s2b: UPDATE foo SET data = data; step s2c: BEGIN; step s2d: UPDATE foo SET data = data; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> ERROR: could not serialize access due to concurrent update step s1b: COMMIT; diff --git a/src/test/isolation/expected/nowait-5.out b/src/test/isolation/expected/nowait-5.out index 2682ea1ab3..f1aae21c1f 100644 --- a/src/test/isolation/expected/nowait-5.out +++ b/src/test/isolation/expected/nowait-5.out @@ -8,8 +8,10 @@ step upd_getlock: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step sl1_exec: BEGIN ISOLATION LEVEL READ COMMITTED; EXECUTE sl1_run; @@ -24,14 +26,18 @@ step lk1_doforshare: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT id FROM test_nowait WHERE id % 2 = 0 FOR SHARE; -id +id +-- + 2 +(1 row) -2 step upd_releaselock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step sl1_exec: <... completed> ERROR: could not obtain lock on row in relation "test_nowait" diff --git a/src/test/isolation/expected/nowait.out b/src/test/isolation/expected/nowait.out index a6343b4afa..ea1cdf012a 100644 --- a/src/test/isolation/expected/nowait.out +++ b/src/test/isolation/expected/nowait.out @@ -2,21 +2,27 @@ Parsed test spec with 2 sessions starting permutation: s1a s1b s2a s2b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1b: COMMIT; step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; starting permutation: s1a s2a s1b s2b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -24,9 +30,11 @@ step s2b: COMMIT; starting permutation: s1a s2a s2b s1b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s2b: COMMIT; @@ -34,9 +42,11 @@ step s1b: COMMIT; starting permutation: s2a s1a s1b s2b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -44,9 +54,11 @@ step s2b: COMMIT; starting permutation: s2a s1a s2b s1b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s2b: COMMIT; @@ -54,12 +66,16 @@ step s1b: COMMIT; starting permutation: s2a s2b s1a s1b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1b: COMMIT; diff --git a/src/test/isolation/expected/partial-index.out b/src/test/isolation/expected/partial-index.out index d1f00c9b3c..d6cae902a9 100644 --- a/src/test/isolation/expected/partial-index.out +++ b/src/test/isolation/expected/partial-index.out @@ -2,51 +2,57 @@ Parsed test spec with 2 sessions starting permutation: rxy1 wx1 c1 wy2 rxy2 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +(9 rows) + step c2: COMMIT; starting permutation: rxy1 wx1 wy2 c1 rxy2 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step c1: COMMIT; @@ -56,87 +62,97 @@ step c2: COMMIT; starting permutation: rxy1 wx1 wy2 rxy2 c1 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wx1 wy2 rxy2 c2 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 wx1 c1 rxy2 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; @@ -146,101 +162,113 @@ step c2: COMMIT; starting permutation: rxy1 wy2 wx1 rxy2 c1 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 wx1 rxy2 c2 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 rxy2 wx1 c1 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; step c2: COMMIT; @@ -248,33 +276,37 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 wy2 rxy2 wx1 c2 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c2: COMMIT; step c1: COMMIT; @@ -282,33 +314,37 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 wy2 rxy2 c2 wx1 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions @@ -317,19 +353,21 @@ step c1: COMMIT; starting permutation: wy2 rxy1 wx1 c1 rxy2 c2 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; step rxy2: select * from test_t where val2 = 1; @@ -339,33 +377,37 @@ step c2: COMMIT; starting permutation: wy2 rxy1 wx1 rxy2 c1 c2 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -373,33 +415,37 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy1 wx1 rxy2 c2 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -407,32 +453,36 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy1 rxy2 wx1 c1 c2 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; step c2: COMMIT; @@ -441,32 +491,36 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy1 rxy2 wx1 c2 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c2: COMMIT; step c1: COMMIT; @@ -475,32 +529,36 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy1 rxy2 c2 wx1 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions @@ -509,32 +567,36 @@ step c1: COMMIT; starting permutation: wy2 rxy2 rxy1 wx1 c1 c2 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; step c2: COMMIT; @@ -543,32 +605,36 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy2 rxy1 wx1 c2 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c2: COMMIT; step c1: COMMIT; @@ -577,32 +643,36 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: wy2 rxy2 rxy1 c2 wx1 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + step c2: COMMIT; step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions @@ -611,31 +681,35 @@ step c1: COMMIT; starting permutation: wy2 rxy2 c2 rxy1 wx1 c1 step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step c2: COMMIT; step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; step c1: COMMIT; diff --git a/src/test/isolation/expected/partition-concurrent-attach.out b/src/test/isolation/expected/partition-concurrent-attach.out index 4986ee25e8..53775f431f 100644 --- a/src/test/isolation/expected/partition-concurrent-attach.out +++ b/src/test/isolation/expected/partition-concurrent-attach.out @@ -10,11 +10,13 @@ step s2i: <... completed> ERROR: new row for relation "tpart_default" violates partition constraint step s2c: commit; step s2s: select tableoid::regclass, * from tpart; -tableoid i j +tableoid| i|j +--------+---+--- +tpart_2 |110|xxx +tpart_2 |120|yyy +tpart_2 |150|zzz +(3 rows) -tpart_2 110 xxx -tpart_2 120 yyy -tpart_2 150 zzz starting permutation: s1b s1a s2b s2i2 s1c s2c s2s step s1b: begin; @@ -26,11 +28,13 @@ step s2i2: <... completed> ERROR: new row for relation "tpart_default" violates partition constraint step s2c: commit; step s2s: select tableoid::regclass, * from tpart; -tableoid i j +tableoid| i|j +--------+---+--- +tpart_2 |110|xxx +tpart_2 |120|yyy +tpart_2 |150|zzz +(3 rows) -tpart_2 110 xxx -tpart_2 120 yyy -tpart_2 150 zzz starting permutation: s1b s2b s2i s1a s2c s1c s2s step s1b: begin; @@ -42,8 +46,10 @@ step s1a: <... completed> ERROR: updated partition constraint for default partition "tpart_default_default" would be violated by some row step s1c: commit; step s2s: select tableoid::regclass, * from tpart; -tableoid i j +tableoid | i|j +---------------------+---+--- +tpart_default_default|110|xxx +tpart_default_default|120|yyy +tpart_default_default|150|zzz +(3 rows) -tpart_default_default110 xxx -tpart_default_default120 yyy -tpart_default_default150 zzz diff --git a/src/test/isolation/expected/partition-key-update-2.out b/src/test/isolation/expected/partition-key-update-2.out index 363de0d69c..f054de5ed9 100644 --- a/src/test/isolation/expected/partition-key-update-2.out +++ b/src/test/isolation/expected/partition-key-update-2.out @@ -9,10 +9,12 @@ step s2donothing: <... completed> step s3donothing: <... completed> step s2c: COMMIT; step s3select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 step s3c: COMMIT; starting permutation: s2donothing s1u s3donothing s1c s2c s3select s3c @@ -23,7 +25,9 @@ step s1c: COMMIT; step s3donothing: <... completed> step s2c: COMMIT; step s3select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +2|initial tuple -> moved by session-1 +(1 row) -2 initial tuple -> moved by session-1 step s3c: COMMIT; diff --git a/src/test/isolation/expected/partition-key-update-3.out b/src/test/isolation/expected/partition-key-update-3.out index a06af2d719..b5872b8b45 100644 --- a/src/test/isolation/expected/partition-key-update-3.out +++ b/src/test/isolation/expected/partition-key-update-3.out @@ -11,10 +11,12 @@ step s2c: COMMIT; step s3donothing: INSERT INTO foo VALUES(2, 'session-3 donothing'), (2, 'session-3 donothing2') ON CONFLICT DO NOTHING; step s3c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2beginrr s3beginrr s1u s3donothing s1c s3c s2donothing s2c s2select step s2beginrr: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -28,10 +30,12 @@ step s3c: COMMIT; step s2donothing: INSERT INTO foo VALUES(1, 'session-2 donothing') ON CONFLICT DO NOTHING; step s2c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2beginrr s3beginrr s1u s2donothing s3donothing s1c s2c s3c s2select step s2beginrr: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -46,10 +50,12 @@ ERROR: could not serialize access due to concurrent update step s2c: COMMIT; step s3c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2beginrr s3beginrr s1u s3donothing s2donothing s1c s3c s2c s2select step s2beginrr: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -64,10 +70,12 @@ step s2donothing: <... completed> step s3c: COMMIT; step s2c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2begins s3begins s1u s2donothing s1c s2c s3donothing s3c s2select step s2begins: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -80,10 +88,12 @@ step s2c: COMMIT; step s3donothing: INSERT INTO foo VALUES(2, 'session-3 donothing'), (2, 'session-3 donothing2') ON CONFLICT DO NOTHING; step s3c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2begins s3begins s1u s3donothing s1c s3c s2donothing s2c s2select step s2begins: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -97,10 +107,12 @@ step s3c: COMMIT; step s2donothing: INSERT INTO foo VALUES(1, 'session-2 donothing') ON CONFLICT DO NOTHING; step s2c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2begins s3begins s1u s2donothing s3donothing s1c s2c s3c s2select step s2begins: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -115,10 +127,12 @@ ERROR: could not serialize access due to concurrent update step s2c: COMMIT; step s3c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 starting permutation: s2begins s3begins s1u s3donothing s2donothing s1c s3c s2c s2select step s2begins: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -133,7 +147,9 @@ step s2donothing: <... completed> step s3c: COMMIT; step s2c: COMMIT; step s2select: SELECT * FROM foo ORDER BY a; -a b +a|b +-+----------------------------------- +1|session-2 donothing +2|initial tuple -> moved by session-1 +(2 rows) -1 session-2 donothing -2 initial tuple -> moved by session-1 diff --git a/src/test/isolation/expected/partition-key-update-4.out b/src/test/isolation/expected/partition-key-update-4.out index 774a7faf6c..91fa0417fd 100644 --- a/src/test/isolation/expected/partition-key-update-4.out +++ b/src/test/isolation/expected/partition-key-update-4.out @@ -9,9 +9,11 @@ step s2c: COMMIT; step s1u: <... completed> step s1c: COMMIT; step s1s: SELECT tableoid::regclass, * FROM foo ORDER BY a; -tableoid a b +tableoid|a|b +--------+-+------------------- +foo2 |2|ABC update2 update1 +(1 row) -foo2 2 ABC update2 update1 starting permutation: s1b s2b s2ut1 s1ut s2c s1c s1st s1stl step s1b: BEGIN ISOLATION LEVEL READ COMMITTED; @@ -22,13 +24,17 @@ step s2c: COMMIT; step s1ut: <... completed> step s1c: COMMIT; step s1st: SELECT tableoid::regclass, * FROM footrg ORDER BY a; -tableoid a b +tableoid|a|b +--------+-+------------------- +footrg2 |2|ABC update2 update1 +(1 row) -footrg2 2 ABC update2 update1 step s1stl: SELECT * FROM triglog ORDER BY a; -a b +a|b +-+------------------- +1|ABC update2 trigger +(1 row) -1 ABC update2 trigger starting permutation: s1b s2b s2u2 s1u s2c s1c s1s step s1b: BEGIN ISOLATION LEVEL READ COMMITTED; @@ -39,9 +45,11 @@ step s2c: COMMIT; step s1u: <... completed> step s1c: COMMIT; step s1s: SELECT tableoid::regclass, * FROM foo ORDER BY a; -tableoid a b +tableoid|a|b +--------+-+--- +foo1 |1|EFG +(1 row) -foo1 1 EFG starting permutation: s1b s2b s2ut2 s1ut s2c s1c s1st s1stl step s1b: BEGIN ISOLATION LEVEL READ COMMITTED; @@ -52,9 +60,13 @@ step s2c: COMMIT; step s1ut: <... completed> step s1c: COMMIT; step s1st: SELECT tableoid::regclass, * FROM footrg ORDER BY a; -tableoid a b +tableoid|a|b +--------+-+--- +footrg1 |1|EFG +(1 row) -footrg1 1 EFG step s1stl: SELECT * FROM triglog ORDER BY a; -a b +a|b +-+- +(0 rows) diff --git a/src/test/isolation/expected/plpgsql-toast.out b/src/test/isolation/expected/plpgsql-toast.out index 213bddad4f..0fee7953ac 100644 --- a/src/test/isolation/expected/plpgsql-toast.out +++ b/src/test/isolation/expected/plpgsql-toast.out @@ -2,17 +2,23 @@ Parsed test spec with 2 sessions starting permutation: lock assign1 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign1: do $$ declare @@ -33,24 +39,32 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(x) = 6000 step assign1: <... completed> starting permutation: lock assign2 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign2: do $$ declare @@ -71,24 +85,32 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(x) = 6000 step assign2: <... completed> starting permutation: lock assign3 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign3: do $$ declare @@ -110,24 +132,32 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(r) = 6004 step assign3: <... completed> starting permutation: lock assign4 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign4: do $$ declare @@ -148,24 +178,32 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(r) = 6004 step assign4: <... completed> starting permutation: lock assign5 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign5: do $$ declare @@ -188,24 +226,32 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(r) = 6002 step assign5: <... completed> starting permutation: lock assign6 vacuum unlock pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - step lock: SELECT pg_advisory_lock(1); pg_advisory_lock +---------------- + +(1 row) - step assign6: do $$ declare @@ -229,8 +275,10 @@ step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: length(r) = 6002 s1: NOTICE: length(r) = 9002 s1: NOTICE: length(r) = 12002 @@ -238,11 +286,15 @@ step assign6: <... completed> starting permutation: fetch-after-commit pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - s1: NOTICE: length(t) = 6000 s1: NOTICE: length(t) = 9000 s1: NOTICE: length(t) = 12000 diff --git a/src/test/isolation/expected/predicate-gin.out b/src/test/isolation/expected/predicate-gin.out index 77eb5aaff7..c032804804 100644 --- a/src/test/isolation/expected/predicate-gin.out +++ b/src/test/isolation/expected/predicate-gin.out @@ -2,13 +2,17 @@ Parsed test spec with 3 sessions starting permutation: ra1 ro2 wo1 c1 wa2 c2 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wa2: insert into gin_tbl values (array[1]); @@ -17,13 +21,17 @@ step c2: commit; starting permutation: ro2 ra1 wo1 c1 wa2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step wo1: insert into other_tbl values (1); step c1: commit; step wa2: insert into gin_tbl values (array[1]); @@ -32,13 +40,17 @@ step c2: commit; starting permutation: ro2 ra1 wo1 wa2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step wo1: insert into other_tbl values (1); step wa2: insert into gin_tbl values (array[1]); step c1: commit; @@ -47,13 +59,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ra1 ro2 wa2 wo1 c1 c2 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wa2: insert into gin_tbl values (array[1]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -62,13 +78,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rb1 ro2 wo1 c1 wb2 c2 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wb2: insert into gin_tbl values (array[2]); @@ -77,13 +97,17 @@ step c2: commit; starting permutation: ro2 rb1 wo1 c1 wb2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step c1: commit; step wb2: insert into gin_tbl values (array[2]); @@ -92,13 +116,17 @@ step c2: commit; starting permutation: ro2 rb1 wo1 wb2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step wb2: insert into gin_tbl values (array[2]); step c1: commit; @@ -107,13 +135,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rb1 ro2 wb2 wo1 c1 c2 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wb2: insert into gin_tbl values (array[2]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -122,13 +154,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rc1 ro2 wo1 c1 wc2 c2 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wc2: insert into gin_tbl values (array[800]); @@ -137,13 +173,17 @@ step c2: commit; starting permutation: ro2 rc1 wo1 c1 wc2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step c1: commit; step wc2: insert into gin_tbl values (array[800]); @@ -152,13 +192,17 @@ step c2: commit; starting permutation: ro2 rc1 wo1 wc2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step wc2: insert into gin_tbl values (array[800]); step c1: commit; @@ -167,13 +211,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rc1 ro2 wc2 wo1 c1 c2 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wc2: insert into gin_tbl values (array[800]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -182,13 +230,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: ra1 ro2 wo1 c1 wb2 c2 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wb2: insert into gin_tbl values (array[2]); @@ -196,13 +248,17 @@ step c2: commit; starting permutation: ro2 ra1 wo1 c1 wc2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step wo1: insert into other_tbl values (1); step c1: commit; step wc2: insert into gin_tbl values (array[800]); @@ -210,13 +266,17 @@ step c2: commit; starting permutation: ro2 rb1 wo1 wa2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step wa2: insert into gin_tbl values (array[1]); step c1: commit; @@ -224,13 +284,17 @@ step c2: commit; starting permutation: rc1 ro2 wa2 wo1 c1 c2 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wa2: insert into gin_tbl values (array[1]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -238,13 +302,17 @@ step c2: commit; starting permutation: rb1 ro2 wo1 c1 wa2 c2 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wa2: insert into gin_tbl values (array[1]); @@ -252,13 +320,17 @@ step c2: commit; starting permutation: ro2 rb1 wo1 c1 wc2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step c1: commit; step wc2: insert into gin_tbl values (array[800]); @@ -266,13 +338,17 @@ step c2: commit; starting permutation: ro2 ra1 wo1 wb2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step wo1: insert into other_tbl values (1); step wb2: insert into gin_tbl values (array[2]); step c1: commit; @@ -280,13 +356,17 @@ step c2: commit; starting permutation: rc1 ro2 wb2 wo1 c1 c2 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wb2: insert into gin_tbl values (array[2]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -294,13 +374,17 @@ step c2: commit; starting permutation: rc1 ro2 wo1 c1 wa2 c2 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wa2: insert into gin_tbl values (array[1]); @@ -308,13 +392,17 @@ step c2: commit; starting permutation: ro2 rc1 wo1 c1 wb2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rc1: select count(*) from gin_tbl where p @> array[800]; -count +count +----- + 1 +(1 row) -1 step wo1: insert into other_tbl values (1); step c1: commit; step wb2: insert into gin_tbl values (array[2]); @@ -322,13 +410,17 @@ step c2: commit; starting permutation: ro2 ra1 wo1 wc2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step wo1: insert into other_tbl values (1); step wc2: insert into gin_tbl values (array[800]); step c1: commit; @@ -336,13 +428,17 @@ step c2: commit; starting permutation: rb1 ro2 wc2 wo1 c1 c2 step rb1: select count(*) from gin_tbl where p @> array[2]; -count +count +----- + 1 +(1 row) -1 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wc2: insert into gin_tbl values (array[800]); step wo1: insert into other_tbl values (1); step c1: commit; @@ -351,13 +447,17 @@ step c2: commit; starting permutation: fu ra1 ro2 wo1 c1 wa2 c2 step fu: alter index ginidx set (fastupdate = on); step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wa2: insert into gin_tbl values (array[1]); @@ -367,13 +467,17 @@ step c2: commit; starting permutation: fu ra1 ro2 wo1 c1 wb2 c2 step fu: alter index ginidx set (fastupdate = on); step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wb2: insert into gin_tbl values (array[2]); @@ -382,13 +486,17 @@ step c2: commit; starting permutation: ra1 ro2 wo1 c1 fu wa2 c2 step ra1: select * from gin_tbl where p @> array[1] limit 1; -p +p +--- +{1} +(1 row) -{1} step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step fu: alter index ginidx set (fastupdate = on); @@ -398,13 +506,17 @@ step c2: commit; starting permutation: rd1 ro2 wo1 c1 wd2 c2 step rd1: select count(*) from gin_tbl where p @> array[2000]; -count +count +----- + 0 +(1 row) -0 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wd2: insert into gin_tbl values (array[2000]); @@ -413,13 +525,17 @@ step c2: commit; starting permutation: ro2 rd1 wo1 c1 wd2 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rd1: select count(*) from gin_tbl where p @> array[2000]; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step c1: commit; step wd2: insert into gin_tbl values (array[2000]); @@ -428,13 +544,17 @@ step c2: commit; starting permutation: ro2 rd1 wo1 wd2 c1 c2 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step rd1: select count(*) from gin_tbl where p @> array[2000]; -count +count +----- + 0 +(1 row) -0 step wo1: insert into other_tbl values (1); step wd2: insert into gin_tbl values (array[2000]); step c1: commit; @@ -443,13 +563,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rd1 ro2 wd2 wo1 c1 c2 step rd1: select count(*) from gin_tbl where p @> array[2000]; -count +count +----- + 0 +(1 row) -0 step ro2: select count(*) from other_tbl; -count +count +----- + 0 +(1 row) -0 step wd2: insert into gin_tbl values (array[2000]); step wo1: insert into other_tbl values (1); step c1: commit; diff --git a/src/test/isolation/expected/predicate-gist.out b/src/test/isolation/expected/predicate-gist.out index 77a27958af..ef5d38630d 100644 --- a/src/test/isolation/expected/predicate-gist.out +++ b/src/test/isolation/expected/predicate-gist.out @@ -2,79 +2,99 @@ Parsed test spec with 2 sessions starting permutation: rxy1 wx1 c1 rxy2 wy2 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c1: commit; step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2233750 +(1 row) -2233750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c2: commit; starting permutation: rxy2 wy2 c2 rxy1 wx1 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c2: commit; step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +316250 +(1 row) -316250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c1: commit; starting permutation: rxy3 wx3 c1 rxy4 wy4 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c1: commit; step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c2: commit; starting permutation: rxy4 wy4 c2 rxy3 wx3 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c2: commit; step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c1: commit; starting permutation: rxy1 wx1 rxy2 c1 wy2 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step c1: commit; step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; @@ -83,15 +103,19 @@ step c2: commit; starting permutation: rxy1 wx1 rxy2 wy2 c1 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c1: commit; @@ -100,15 +124,19 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 wx1 rxy2 wy2 c2 c1 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c2: commit; @@ -117,13 +145,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wx1 c1 wy2 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c1: commit; @@ -134,13 +166,17 @@ step c2: commit; starting permutation: rxy1 rxy2 wx1 wy2 c1 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step wy2: insert into gist_point_tbl (id, p) @@ -151,13 +187,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wx1 wy2 c2 c1 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step wy2: insert into gist_point_tbl (id, p) @@ -168,13 +208,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 wx1 c1 c2 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step wx1: insert into gist_point_tbl (id, p) @@ -185,13 +229,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 wx1 c2 c1 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step wx1: insert into gist_point_tbl (id, p) @@ -202,13 +250,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 c2 wx1 c1 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c2: commit; @@ -219,13 +271,17 @@ step c1: commit; starting permutation: rxy2 rxy1 wx1 c1 wy2 c2 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c1: commit; @@ -236,13 +292,17 @@ step c2: commit; starting permutation: rxy2 rxy1 wx1 wy2 c1 c2 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step wy2: insert into gist_point_tbl (id, p) @@ -253,13 +313,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wx1 wy2 c2 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step wy2: insert into gist_point_tbl (id, p) @@ -270,13 +334,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 wx1 c1 c2 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step wx1: insert into gist_point_tbl (id, p) @@ -287,13 +355,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 wx1 c2 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step wx1: insert into gist_point_tbl (id, p) @@ -304,13 +376,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 c2 wx1 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step c2: commit; @@ -321,15 +397,19 @@ step c1: commit; starting permutation: rxy2 wy2 rxy1 wx1 c1 c2 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c1: commit; @@ -338,15 +418,19 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 wy2 rxy1 wx1 c2 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; step c2: commit; @@ -355,15 +439,19 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 wy2 rxy1 c2 wx1 c1 step rxy2: select sum(p[0]) from gist_point_tbl where p >> point(7500,7500); -sum + sum +------- +2188750 +(1 row) -2188750 step wy2: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(1, 5) g; step rxy1: select sum(p[0]) from gist_point_tbl where p << point(2500, 2500); -sum + sum +------ +311250 +(1 row) -311250 step c2: commit; step wx1: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(15, 20) g; @@ -372,15 +460,19 @@ step c1: commit; starting permutation: rxy3 wx3 rxy4 c1 wy4 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step c1: commit; step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; @@ -388,15 +480,19 @@ step c2: commit; starting permutation: rxy3 wx3 rxy4 wy4 c1 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c1: commit; @@ -404,15 +500,19 @@ step c2: commit; starting permutation: rxy3 wx3 rxy4 wy4 c2 c1 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c2: commit; @@ -420,13 +520,17 @@ step c1: commit; starting permutation: rxy3 rxy4 wx3 c1 wy4 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c1: commit; @@ -436,13 +540,17 @@ step c2: commit; starting permutation: rxy3 rxy4 wx3 wy4 c1 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step wy4: insert into gist_point_tbl (id, p) @@ -452,13 +560,17 @@ step c2: commit; starting permutation: rxy3 rxy4 wx3 wy4 c2 c1 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step wy4: insert into gist_point_tbl (id, p) @@ -468,13 +580,17 @@ step c1: commit; starting permutation: rxy3 rxy4 wy4 wx3 c1 c2 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step wx3: insert into gist_point_tbl (id, p) @@ -484,13 +600,17 @@ step c2: commit; starting permutation: rxy3 rxy4 wy4 wx3 c2 c1 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step wx3: insert into gist_point_tbl (id, p) @@ -500,13 +620,17 @@ step c1: commit; starting permutation: rxy3 rxy4 wy4 c2 wx3 c1 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c2: commit; @@ -516,13 +640,17 @@ step c1: commit; starting permutation: rxy4 rxy3 wx3 c1 wy4 c2 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c1: commit; @@ -532,13 +660,17 @@ step c2: commit; starting permutation: rxy4 rxy3 wx3 wy4 c1 c2 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step wy4: insert into gist_point_tbl (id, p) @@ -548,13 +680,17 @@ step c2: commit; starting permutation: rxy4 rxy3 wx3 wy4 c2 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step wy4: insert into gist_point_tbl (id, p) @@ -564,13 +700,17 @@ step c1: commit; starting permutation: rxy4 rxy3 wy4 wx3 c1 c2 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step wx3: insert into gist_point_tbl (id, p) @@ -580,13 +720,17 @@ step c2: commit; starting permutation: rxy4 rxy3 wy4 wx3 c2 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step wx3: insert into gist_point_tbl (id, p) @@ -596,13 +740,17 @@ step c1: commit; starting permutation: rxy4 rxy3 wy4 c2 wx3 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step c2: commit; @@ -612,15 +760,19 @@ step c1: commit; starting permutation: rxy4 wy4 rxy3 wx3 c1 c2 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c1: commit; @@ -628,15 +780,19 @@ step c2: commit; starting permutation: rxy4 wy4 rxy3 wx3 c2 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; step c2: commit; @@ -644,15 +800,19 @@ step c1: commit; starting permutation: rxy4 wy4 rxy3 c2 wx3 c1 step rxy4: select sum(p[0]) from gist_point_tbl where p << point(1000,1000); -sum + sum +----- +49500 +(1 row) -49500 step wy4: insert into gist_point_tbl (id, p) select g, point(g*50, g*50) from generate_series(1, 20) g; step rxy3: select sum(p[0]) from gist_point_tbl where p >> point(6000,6000); -sum + sum +------- +3202000 +(1 row) -3202000 step c2: commit; step wx3: insert into gist_point_tbl (id, p) select g, point(g*500, g*500) from generate_series(12, 18) g; diff --git a/src/test/isolation/expected/predicate-hash.out b/src/test/isolation/expected/predicate-hash.out index 53e500fd26..2009252dca 100644 --- a/src/test/isolation/expected/predicate-hash.out +++ b/src/test/isolation/expected/predicate-hash.out @@ -2,79 +2,99 @@ Parsed test spec with 2 sessions starting permutation: rxy1 wx1 c1 rxy2 wy2 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step c1: commit; step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +600 +(1 row) -600 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step c2: commit; starting permutation: rxy2 wy2 c2 rxy1 wx1 c1 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step c2: commit; step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +400 +(1 row) -400 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step c1: commit; starting permutation: rxy3 wx3 c1 rxy4 wy4 c2 step rxy3: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx3: insert into hash_tbl (id, p) select g, 50 from generate_series(41, 50) g; step c1: commit; step rxy4: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy4: insert into hash_tbl (id, p) select g, 60 from generate_series(51, 60) g; step c2: commit; starting permutation: rxy4 wy4 c2 rxy3 wx3 c1 step rxy4: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy4: insert into hash_tbl (id, p) select g, 60 from generate_series(51, 60) g; step c2: commit; step rxy3: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx3: insert into hash_tbl (id, p) select g, 50 from generate_series(41, 50) g; step c1: commit; starting permutation: rxy1 wx1 rxy2 c1 wy2 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step c1: commit; step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; @@ -83,15 +103,19 @@ step c2: commit; starting permutation: rxy1 wx1 rxy2 wy2 c1 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step c1: commit; @@ -100,15 +124,19 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 wx1 rxy2 wy2 c2 c1 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step c2: commit; @@ -117,13 +145,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wx1 c1 wy2 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step c1: commit; @@ -134,13 +166,17 @@ step c2: commit; starting permutation: rxy1 rxy2 wx1 wy2 c1 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step wy2: insert into hash_tbl (id, p) @@ -151,13 +187,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wx1 wy2 c2 c1 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step wy2: insert into hash_tbl (id, p) @@ -168,13 +208,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 wx1 c1 c2 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step wx1: insert into hash_tbl (id, p) @@ -185,13 +229,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 wx1 c2 c1 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step wx1: insert into hash_tbl (id, p) @@ -202,13 +250,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy1 rxy2 wy2 c2 wx1 c1 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step c2: commit; @@ -219,13 +271,17 @@ step c1: commit; starting permutation: rxy2 rxy1 wx1 c1 wy2 c2 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step c1: commit; @@ -236,13 +292,17 @@ step c2: commit; starting permutation: rxy2 rxy1 wx1 wy2 c1 c2 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step wy2: insert into hash_tbl (id, p) @@ -253,13 +313,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wx1 wy2 c2 c1 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wx1: insert into hash_tbl (id, p) select g, 30 from generate_series(41, 50) g; step wy2: insert into hash_tbl (id, p) @@ -270,13 +334,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 wx1 c1 c2 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step wx1: insert into hash_tbl (id, p) @@ -287,13 +355,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 wx1 c2 c1 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl where p=20; -sum +sum +--- +200 +(1 row) -200 step wy2: insert into hash_tbl (id, p) select g, 20 from generate_series(51, 60) g; step wx1: insert into hash_tbl (id, p) @@ -304,13 +376,17 @@ ERROR: could not serialize access due to read/write dependencies among transact starting permutation: rxy2 rxy1 wy2 c2 wx1 c1 step rxy2: select sum(p) from hash_tbl where p=30; -sum +sum +--- +300 +(1 row) -300 step rxy1: select sum(p) from hash_tbl |
