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 ...>
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 ...>
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);
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);
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;
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;
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);
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);
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;
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;
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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
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
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
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 txid_current() 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
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 txid_current() 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 txid_current() 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 txid_current() 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
step s0_begin: BEGIN;
step s0_begin_sub0: SAVEPOINT s0;
step s0_log_assignment: SELECT txid_current() 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 txid_current() 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;
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
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
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
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;
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;
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;
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;
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
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;
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;
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;
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
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
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
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;
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;
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
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
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;
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;
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
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;
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;
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;
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;
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;
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
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
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;
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;
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
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;
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;
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;
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;
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;
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
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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 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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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);
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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>
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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 ...>
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 ...>
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 ...>
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 ...>
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 ...>
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 ...>
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;
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;
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;
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;
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;
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>
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;
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;
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>
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;
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;
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;
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;
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;
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;
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;
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);
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>
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;
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;
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);
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>
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;
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);
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>
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);
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;
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);
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 ...>
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;
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;
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;
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);
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>
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;
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);
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>
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);
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;
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);
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 ...>
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;
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;
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);
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>
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);
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;
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);
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 ...>
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;
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;
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 ...>
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 ...>
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);
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);
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 ...>
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);
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);
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;
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;
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;
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;
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;
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"
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>
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;
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"
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>
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);
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;
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;
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;
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"
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>
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);
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;
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;
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;
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 ...>
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;
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;
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;
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;
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;
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;
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"
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>
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);
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;
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;
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;
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 ...>
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;
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;
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;
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;
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;
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;
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;
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 ...>
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"
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"
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"
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"
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;
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;
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;
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;
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;
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;
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;
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;
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
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
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
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
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
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
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;
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;
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';
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;
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;
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;
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;
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');
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';
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;
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;
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;
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;
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');
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;
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;
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
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;
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;
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;
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;
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>
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;
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;
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>
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;
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;
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;
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();
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;
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;
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>
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;
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;
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;
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();
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;
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 ...>
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 ...>
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;
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 ...>
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;
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;
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;
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;
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;
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
- -> Seq Scan on test_dc
+step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq;
+QUERY PLAN
+-------------------------------------------
+Sort
+ Sort Key: id, data
+ -> Seq Scan on test_dc
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>
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
- -> Seq Scan on test_dc
+step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq;
+QUERY PLAN
+-------------------------------------------
+Sort
+ Sort Key: id, data
+ -> Seq Scan on test_dc
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>
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)
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
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)
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
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();
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)
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
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();
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)
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
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)
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:
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)
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:
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();
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)
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:
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();
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)
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:
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();
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>
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:
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();
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>
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:
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();
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;
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();
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();
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)
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')
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();
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)
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')
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();
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')
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();
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')
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();
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)
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')
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();
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)
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')
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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)
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:
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)
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:
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)
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:
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)
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:
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();
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>
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:
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();
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>
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:
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>
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:
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>
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:
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();
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)
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:
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)
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)
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:
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)
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:
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();
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>
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:
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-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();
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>
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:
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
step wx2: <... completed>
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';
step wy2: <... completed>
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: upsert1 upsert2 c1 c2 read
step upsert1:
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
<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: wx2 partiallock c2 c1 read
<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';
<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;
<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:
<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
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:
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;
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;
<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
-
-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
+(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)
+
step c1: COMMIT;
starting permutation: wrtwcte multireadwcte c1 c2
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:
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;
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
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);
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);
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);
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);
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);
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);
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
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);
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;
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;
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;
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;
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;
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;
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;
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;
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
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
step a1: ABORT;
step donothing2: <... completed>
step select2: SELECT * FROM ints;
-key val
+key|val
+---+----------
+ 1|donothing2
+(1 row)
-1 donothing2
step c2: COMMIT;
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
step a1: ABORT;
step insert2: <... completed>
step select2: SELECT * FROM upsert;
-key payload
+key |payload
+------+-------
+FOOFOO|insert2
+(1 row)
-FOOFOO insert2
step c2: COMMIT;
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;
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
step a1: ABORT;
step insert2: <... completed>
step select2: SELECT * FROM upsert;
-key val
+key|val
+---+-------
+ 1|insert2
+(1 row)
-1 insert2
step c2: COMMIT;
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
+pg_advisory_lock|sess|lock
+----------------+----+----
+ | 1| 1
+ | 1| 2
+ | 1| 3
+ | 2| 1
+ | 2| 2
+ | 2| 3
+(6 rows)
- 1 1
- 1 2
- 1 3
- 2 1
- 2 2
- 2 3
step controller_show: SELECT * FROM upserttest;
-key data
+key|data
+---+----
+(0 rows)
s1: NOTICE: called for k1
s1: NOTICE: blocking 3
s2: NOTICE: blocking 3
step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(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: called for k1
s1: NOTICE: blocking 2
step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3);
pg_advisory_unlock
+------------------
+t
+(1 row)
-t
s2: NOTICE: called for k1
s2: NOTICE: blocking 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: called for k1
s1: NOTICE: blocking 2
s1: NOTICE: called for k1
s1: NOTICE: blocking 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
+pg_advisory_lock|sess|lock
+----------------+----+----
+ | 1| 1
+ | 1| 2
+ | 1| 3
+ | 2| 1
+ | 2| 2
+ | 2| 3
+(6 rows)
- 1 1
- 1 2
- 1 3
- 2 1
- 2 2
- 2 3
step controller_show: SELECT * FROM upserttest;
-key data
+key|data
+---+----
+(0 rows)
s1: NOTICE: called for k1
s1: NOTICE: blocking 3
s2: NOTICE: blocking 3
step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(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: called for k1
s1: NOTICE: blocking 2
step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3);
pg_advisory_unlock
+------------------
+t
+(1 row)
-t
s2: NOTICE: called for k1
s2: NOTICE: blocking 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: called for k1
s2: NOTICE: blocking 2
s2: NOTICE: called for k1
s2: NOTICE: blocking 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_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
+pg_advisory_lock|sess|lock
+----------------+----+----
+ | 1| 1
+ | 1| 2
+ | 1| 3
+ | 2| 1
+ | 2| 2
+ | 2| 3
+(6 rows)
- 1 1
- 1 2
- 1 3
- 2 1
- 2 2
- 2 3
step controller_show: SELECT * FROM upserttest;
-key data
+key|data
+---+----
+(0 rows)
step s1_begin: BEGIN;
step s2_begin: BEGIN;
s2: NOTICE: blocking 3
step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(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: called for k1
s1: NOTICE: blocking 2
step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3);
pg_advisory_unlock
+------------------
+t
+(1 row)
-t
s2: NOTICE: called for k1
s2: NOTICE: blocking 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: called for k1
s2: NOTICE: blocking 2
s2: NOTICE: called for k1
s2: NOTICE: blocking 2
step controller_show: SELECT * FROM upserttest;
-key data
+key|data
+---+----
+(0 rows)
step s1_commit: COMMIT;
s2: NOTICE: called for k1
s2: NOTICE: blocking 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: s2insert s3insert s1commit
pg_advisory_xact_lock
+---------------------
+
+(1 row)
-
step s2insert:
INSERT INTO ctoast (key, val) VALUES (1, ctoast_large_val()) ON CONFLICT DO NOTHING;
<waiting ...>
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)
-
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)
-
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;
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;
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;
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;
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;
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;
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_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;
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;
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;
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;
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;
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;
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
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;
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;
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;
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);
<waiting ...>
step s1i: <... completed>
step s2i: <... completed>
-unlck
+unlck
+-----
+t
+(1 row)
-t
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;
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;
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
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 ...>
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 ...>
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;
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;
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;
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;
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;
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;
SELECT pg_advisory_lock(0);
pg_advisory_lock
+----------------
+
+(1 row)
-
step sl1_exec:
BEGIN ISOLATION LEVEL READ COMMITTED;
EXECUTE sl1_run;
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"
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;
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;
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;
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;
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;