On 01/20/2015 10:08 AM, Noah Misch wrote:
Fair enough. It did reinforce pg_get_constraintdef() as a subroutine of pg_dump rather than an independent, rigorous interface. It perhaps made the function worse for non-pg_dump callers. In that vein, each one of these hacks has a cost. One could make a reasonable argument that ALTER TRIGGER RENAME locking is not important enough to justify spreading the hack from pg_get_constraintdef() to pg_get_triggerdef(). Lowering the CREATE TRIGGER lock level does not require any ruleutils.c change for the benefit of pg_dump, because pg_dump won't see the pg_trigger row of a too-recent trigger.
I agree with this view, and am not sure myself that it is worth lowering the lock level of ALTER TRIGGER RENAME. I have attached a patch without the changes to ALTER TRIGGER and ruleutils.c and also fixes the comment issues noted by Andres.
-- Andreas Karlsson
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index a0d6867..fc86224 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -908,9 +908,9 @@ ERROR: could not serialize access due to read/write dependencies among transact </para> <para> - This lock mode is not automatically acquired by any - <productname>PostgreSQL</productname> command. - </para> + Acquired by <command>CREATE TRIGGER</command> and many forms of + <command>ALTER TABLE</command> (see <xref linkend="SQL-ALTERTABLE">). + </para>> </listitem> </varlistentry> @@ -957,9 +957,9 @@ ERROR: could not serialize access due to read/write dependencies among transact <command>TRUNCATE</command>, <command>REINDEX</command>, <command>CLUSTER</command>, and <command>VACUUM FULL</command> commands. Many forms of <command>ALTER TABLE</> also acquire - a lock at this level (see <xref linkend="SQL-ALTERTABLE">). - This is also the default lock mode for <command>LOCK TABLE</command> - statements that do not specify a mode explicitly. + a lock at this level. This is also the default lock mode for + <command>LOCK TABLE</command> statements that do not specify + a mode explicitly. </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index b3a4970..f5bbfcd 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -406,6 +406,9 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable> mode, and triggers configured as <literal>ENABLE ALWAYS</literal> will fire regardless of the current replication mode. </para> + <para> + This command acquires a <literal>SHARE ROW EXCLUSIVE</literal> lock. + </para> </listitem> </varlistentry> diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 66d5083..08aa71b 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -2858,13 +2858,8 @@ AlterTableGetLockLevel(List *cmds) break; /* - * These subcommands affect write operations only. XXX - * Theoretically, these could be ShareRowExclusiveLock. + * These subcommands affect write operations only. */ - case AT_ColumnDefault: - case AT_ProcessedConstraint: /* becomes AT_AddConstraint */ - case AT_AddConstraintRecurse: /* becomes AT_AddConstraint */ - case AT_ReAddConstraint: /* becomes AT_AddConstraint */ case AT_EnableTrig: case AT_EnableAlwaysTrig: case AT_EnableReplicaTrig: @@ -2873,6 +2868,17 @@ AlterTableGetLockLevel(List *cmds) case AT_DisableTrig: case AT_DisableTrigAll: case AT_DisableTrigUser: + cmd_lockmode = ShareRowExclusiveLock; + break; + + /* + * These subcommands affect write operations only. XXX + * Theoretically, these could be ShareRowExclusiveLock. + */ + case AT_ColumnDefault: + case AT_ProcessedConstraint: /* becomes AT_AddConstraint */ + case AT_AddConstraintRecurse: /* becomes AT_AddConstraint */ + case AT_ReAddConstraint: /* becomes AT_AddConstraint */ case AT_AlterConstraint: case AT_AddIndex: /* from ADD CONSTRAINT */ case AT_AddIndexConstraint: @@ -2909,11 +2915,9 @@ AlterTableGetLockLevel(List *cmds) /* * We add triggers to both tables when we add a * Foreign Key, so the lock level must be at least - * as strong as CREATE TRIGGER. XXX Might be set - * down to ShareRowExclusiveLock though trigger - * info is accessed by pg_get_triggerdef + * as strong as CREATE TRIGGER. */ - cmd_lockmode = AccessExclusiveLock; + cmd_lockmode = ShareRowExclusiveLock; break; default: @@ -6030,16 +6034,13 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, ListCell *old_pfeqop_item = list_head(fkconstraint->old_conpfeqop); /* - * Grab an exclusive lock on the pk table, so that someone doesn't delete - * rows out from under us. (Although a lesser lock would do for that - * purpose, we'll need exclusive lock anyway to add triggers to the pk - * table; trying to start with a lesser lock will just create a risk of - * deadlock.) + * Grab ShareRowExclusiveLock on the pk table, so that someone doesn't + * delete rows out from under us. */ if (OidIsValid(fkconstraint->old_pktable_oid)) - pkrel = heap_open(fkconstraint->old_pktable_oid, AccessExclusiveLock); + pkrel = heap_open(fkconstraint->old_pktable_oid, ShareRowExclusiveLock); else - pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock); + pkrel = heap_openrv(fkconstraint->pktable, ShareRowExclusiveLock); /* * Validity checks (permission checks wait till we have the column diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 4899a27..d13419d 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -158,9 +158,9 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, referenced; if (OidIsValid(relOid)) - rel = heap_open(relOid, AccessExclusiveLock); + rel = heap_open(relOid, ShareRowExclusiveLock); else - rel = heap_openrv(stmt->relation, AccessExclusiveLock); + rel = heap_openrv(stmt->relation, ShareRowExclusiveLock); /* * Triggers must be on tables or views, and there are additional diff --git a/src/test/isolation/expected/alter-table-1.out b/src/test/isolation/expected/alter-table-1.out index edf7288..9daa418 100644 --- a/src/test/isolation/expected/alter-table-1.out +++ b/src/test/isolation/expected/alter-table-1.out @@ -703,12 +703,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 sc2 wx rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -724,12 +723,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx sc2 rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); @@ -745,12 +743,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); @@ -766,12 +763,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx rx1 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); @@ -787,12 +783,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx at2 sc2 rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -808,12 +803,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx at2 rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -829,12 +823,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx at2 rx1 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -850,12 +843,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx rx1 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -871,12 +863,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx rx1 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -892,12 +883,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx rx1 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -913,12 +903,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 at2 sc2 rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -934,12 +923,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 at2 rx1 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; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -955,12 +943,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 at2 rx1 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -976,12 +963,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 rx1 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -997,12 +983,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 rx1 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -1018,12 +1003,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 rx1 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; @@ -1039,12 +1023,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx rx1 s2 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1060,12 +1043,11 @@ step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx rx1 s2 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1081,12 +1063,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx rx1 s2 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1102,12 +1083,11 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx rx1 c2 s2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -step sc1: COMMIT; -step rx1: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 +step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1123,137 +1103,362 @@ step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 at2 sc2 rx1 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; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 at2 rx1 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; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 at2 rx1 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 rx1 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step s2: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 rx1 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step s2: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 rx1 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step s2: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 rx1 s2 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 rx1 s2 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 rx1 s2 c2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 rx1 c2 s2 at2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id -starting permutation: s1 at1 rx1 wx rx1 sc1 s2 at2 sc2 c2 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> +step sc1: COMMIT; +step wx: <... completed> +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id -starting permutation: s1 at1 rx1 wx rx1 sc1 s2 at2 c2 sc2 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +3 +3 +3 +step c2: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; -starting permutation: s1 at1 rx1 wx rx1 sc1 s2 c2 at2 sc2 +starting permutation: s1 at1 rx1 wx rx1 sc1 s2 at2 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id -starting permutation: s1 at1 rx1 wx rx1 sc1 c2 s2 at2 sc2 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> +1 +step wx: INSERT INTO b VALUES (0); <waiting ...> invalid permutation detected -starting permutation: s1 at1 rx1 wx rx1 c2 sc1 s2 at2 sc2 +starting permutation: s1 at1 rx1 wx rx1 sc1 s2 at2 c2 sc2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; <waiting ...> -invalid permutation detected - -starting permutation: s1 rx1 at1 sc1 s2 at2 sc2 wx rx1 c2 -step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +step wx: INSERT INTO b VALUES (0); <waiting ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 s2 at2 wx sc2 rx1 c2 +starting permutation: s1 at1 rx1 wx rx1 sc1 s2 c2 at2 sc2 step s1: BEGIN; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +step wx: INSERT INTO b VALUES (0); <waiting ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx1 sc2 c2 +starting permutation: s1 at1 rx1 wx rx1 sc1 c2 s2 at2 sc2 step s1: BEGIN; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +step wx: INSERT INTO b VALUES (0); <waiting ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx1 c2 sc2 +starting permutation: s1 at1 rx1 wx rx1 c2 sc1 s2 at2 sc2 step s1: BEGIN; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +step wx: INSERT INTO b VALUES (0); <waiting ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 s2 wx at2 sc2 rx1 c2 +starting permutation: s1 rx1 at1 sc1 s2 at2 sc2 wx rx1 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 wx: INSERT INTO b VALUES (0); +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 s2 at2 wx sc2 rx1 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx1 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx1 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 s2 wx at2 sc2 rx1 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx1 sc2 c2 step s1: BEGIN; @@ -1261,8 +1466,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx1 c2 sc2 step s1: BEGIN; @@ -1270,8 +1486,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx rx1 at2 sc2 c2 step s1: BEGIN; @@ -1279,8 +1506,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 at2 c2 sc2 step s1: BEGIN; @@ -1288,8 +1526,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 c2 at2 sc2 step s1: BEGIN; @@ -1297,8 +1546,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 c2 step s1: BEGIN; @@ -1306,8 +1566,19 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx1 sc2 c2 step s1: BEGIN; @@ -1315,189 +1586,548 @@ step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx1 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx s2 rx1 at2 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 at2 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 c2 at2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx rx1 s2 at2 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx rx1 s2 at2 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx rx1 s2 c2 at2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 sc1 wx rx1 c2 s2 at2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 s2 at2 sc2 rx1 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx1 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx1 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 s2 rx1 at2 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 at2 c2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 c2 at2 sc2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 rx1 s2 at2 sc2 c2 +step s1: BEGIN; +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; -starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx1 c2 sc2 +starting permutation: s1 rx1 at1 wx sc1 rx1 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id -starting permutation: s1 rx1 at1 sc1 wx s2 rx1 at2 sc2 c2 +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 rx1 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id -starting permutation: s1 rx1 at1 sc1 wx s2 rx1 at2 c2 sc2 +3 +3 +3 +step s2: BEGIN; +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx sc1 rx1 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id -starting permutation: s1 rx1 at1 sc1 wx s2 rx1 c2 at2 sc2 +3 +3 +3 +step c2: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; + +starting permutation: s1 rx1 at1 wx rx1 sc1 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 wx rx1 s2 at2 sc2 c2 +starting permutation: s1 rx1 at1 wx rx1 sc1 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 wx rx1 s2 at2 c2 sc2 +starting permutation: s1 rx1 at1 wx rx1 sc1 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 wx rx1 s2 c2 at2 sc2 +starting permutation: s1 rx1 at1 wx rx1 sc1 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 sc1 wx rx1 c2 s2 at2 sc2 +starting permutation: s1 rx1 at1 wx rx1 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 at2 sc2 rx1 c2 +starting permutation: s1 rx1 wx at1 sc1 s2 at2 sc2 rx1 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx1 sc2 c2 +starting permutation: s1 rx1 wx at1 sc1 s2 at2 rx1 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx1 c2 sc2 +starting permutation: s1 rx1 wx at1 sc1 s2 at2 rx1 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 rx1 at2 sc2 c2 +starting permutation: s1 rx1 wx at1 sc1 s2 rx1 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 rx1 at2 c2 sc2 +starting permutation: s1 rx1 wx at1 sc1 s2 rx1 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 s2 rx1 c2 at2 sc2 +starting permutation: s1 rx1 wx at1 sc1 s2 rx1 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 rx1 s2 at2 sc2 c2 +starting permutation: s1 rx1 wx at1 sc1 rx1 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 rx1 s2 at2 c2 sc2 +starting permutation: s1 rx1 wx at1 sc1 rx1 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 rx1 s2 c2 at2 sc2 +starting permutation: s1 rx1 wx at1 sc1 rx1 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx sc1 rx1 c2 s2 at2 sc2 +starting permutation: s1 rx1 wx at1 sc1 rx1 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 ...> invalid permutation detected -starting permutation: s1 rx1 at1 wx rx1 sc1 s2 at2 sc2 c2 +starting permutation: s1 rx1 wx at1 rx1 sc1 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1506,14 +2136,14 @@ a_id 3 invalid permutation detected -starting permutation: s1 rx1 at1 wx rx1 sc1 s2 at2 c2 sc2 +starting permutation: s1 rx1 wx at1 rx1 sc1 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1522,14 +2152,14 @@ a_id 3 invalid permutation detected -starting permutation: s1 rx1 at1 wx rx1 sc1 s2 c2 at2 sc2 +starting permutation: s1 rx1 wx at1 rx1 sc1 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1538,14 +2168,14 @@ a_id 3 invalid permutation detected -starting permutation: s1 rx1 at1 wx rx1 sc1 c2 s2 at2 sc2 +starting permutation: s1 rx1 wx at1 rx1 sc1 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1554,14 +2184,14 @@ a_id 3 invalid permutation detected -starting permutation: s1 rx1 at1 wx rx1 c2 sc1 s2 at2 sc2 +starting permutation: s1 rx1 wx at1 rx1 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1575,197 +2205,181 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; -starting permutation: s1 rx1 wx at1 sc1 s2 at2 sc2 rx1 c2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id - -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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 s2 at2 rx1 sc2 c2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id - -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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 s2 at2 rx1 c2 sc2 +starting permutation: s1 rx1 wx rx1 at1 sc1 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 s2 rx1 at2 sc2 c2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step wx: INSERT INTO b VALUES (0); +3 +3 +3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> invalid permutation detected -starting permutation: s1 rx1 wx at1 sc1 s2 rx1 at2 c2 sc2 +starting permutation: s1 rx1 wx rx1 at1 sc1 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 s2 rx1 c2 at2 sc2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step wx: INSERT INTO b VALUES (0); +3 +3 +3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> invalid permutation detected -starting permutation: s1 rx1 wx at1 sc1 rx1 s2 at2 sc2 c2 +starting permutation: s1 rx1 wx rx1 at1 sc1 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 rx1 s2 at2 c2 sc2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step wx: INSERT INTO b VALUES (0); +3 +3 +3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> invalid permutation detected -starting permutation: s1 rx1 wx at1 sc1 rx1 s2 c2 at2 sc2 +starting permutation: s1 rx1 wx rx1 at1 sc1 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 ...> -invalid permutation detected - -starting permutation: s1 rx1 wx at1 sc1 rx1 c2 s2 at2 sc2 -step s1: BEGIN; -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step wx: INSERT INTO b VALUES (0); +3 +3 +3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> invalid permutation detected -starting permutation: s1 rx1 wx at1 rx1 sc1 s2 at2 sc2 c2 +starting permutation: s1 rx1 wx rx1 at1 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -invalid permutation detected +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> +step c2: COMMIT; +step at1: <... completed> +step sc1: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; -starting permutation: s1 rx1 wx at1 rx1 sc1 s2 at2 c2 sc2 +starting permutation: s1 rx1 wx rx1 c2 at1 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -invalid permutation detected +step c2: COMMIT; +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; -starting permutation: s1 rx1 wx at1 rx1 sc1 s2 c2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 at2 sc2 wx rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 sc2: COMMIT; 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -invalid permutation detected +step c2: COMMIT; -starting permutation: s1 rx1 wx at1 rx1 sc1 c2 s2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 at2 wx sc2 rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 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 sc2: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -invalid permutation detected +step c2: COMMIT; -starting permutation: s1 rx1 wx at1 rx1 c2 sc1 s2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx1 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -step c2: COMMIT; -step at1: <... completed> -step sc1: COMMIT; -step s2: BEGIN; -step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; +step c2: COMMIT; -starting permutation: s1 rx1 wx rx1 at1 sc1 s2 at2 sc2 c2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx1 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 wx: INSERT INTO b VALUES (0); step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1773,63 +2387,78 @@ a_id 3 3 3 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +step c2: COMMIT; +step sc2: COMMIT; -starting permutation: s1 rx1 wx rx1 at1 sc1 s2 at2 c2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 wx at2 sc2 rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +step c2: COMMIT; -starting permutation: s1 rx1 wx rx1 at1 sc1 s2 c2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx1 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +step sc2: COMMIT; +step c2: COMMIT; -starting permutation: s1 rx1 wx rx1 at1 sc1 c2 s2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx1 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +step c2: COMMIT; +step sc2: COMMIT; -starting permutation: s1 rx1 wx rx1 at1 c2 sc1 s2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 wx rx1 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1837,20 +2466,19 @@ a_id 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> -step sc1: COMMIT; -step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; +step c2: COMMIT; -starting permutation: s1 rx1 wx rx1 c2 at1 sc1 s2 at2 sc2 -step s1: BEGIN; +starting permutation: rx1 s1 at1 sc1 s2 wx rx1 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id @@ -1858,174 +2486,189 @@ a_id 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; -step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; step sc2: COMMIT; -starting permutation: rx1 s1 at1 sc1 s2 at2 sc2 wx rx1 c2 +starting permutation: rx1 s1 at1 sc1 s2 wx rx1 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 s2 at2 wx sc2 rx1 c2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; -starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx1 sc2 c2 +starting permutation: rx1 s1 at1 sc1 wx s2 at2 sc2 rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx1 c2 sc2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step c2: COMMIT; -starting permutation: rx1 s1 at1 sc1 s2 wx at2 sc2 rx1 c2 +starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx1 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx1 sc2 c2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; -starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx1 c2 sc2 +starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx1 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 s2 wx rx1 at2 sc2 c2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; -starting permutation: rx1 s1 at1 sc1 s2 wx rx1 at2 c2 sc2 +starting permutation: rx1 s1 at1 sc1 wx s2 rx1 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 s2 wx rx1 c2 at2 sc2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 at2 sc2 rx1 c2 +starting permutation: rx1 s1 at1 sc1 wx s2 rx1 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx1 sc2 c2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 at2 rx1 c2 sc2 +starting permutation: rx1 s1 at1 sc1 wx s2 rx1 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 wx s2 rx1 at2 sc2 c2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1 at2 c2 sc2 +starting permutation: rx1 s1 at1 sc1 wx rx1 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 wx s2 rx1 c2 at2 sc2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; -starting permutation: rx1 s1 at1 sc1 wx rx1 s2 at2 sc2 c2 +starting permutation: rx1 s1 at1 sc1 wx rx1 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected - -starting permutation: rx1 s1 at1 sc1 wx rx1 s2 at2 c2 sc2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx1 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2033,8 +2676,19 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx1 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2042,8 +2696,19 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 sc2 rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2051,9 +2716,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx1 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2061,9 +2737,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step sc2: COMMIT; +step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx1 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2071,9 +2758,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx1 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2081,9 +2779,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2091,9 +2800,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +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 rx1 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2101,9 +2821,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx1 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2111,9 +2842,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; +step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx1 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2121,9 +2863,20 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +a_id + +3 +3 +3 +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step c2: COMMIT; +step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx1 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; @@ -2131,50 +2884,60 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected - -starting permutation: rx1 s1 at1 wx sc1 rx1 c2 s2 at2 sc2 -step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id -1 -step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -invalid permutation detected +3 +3 +3 +step s2: BEGIN; +step c2: COMMIT; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; -starting permutation: rx1 s1 at1 wx rx1 sc1 s2 at2 sc2 c2 +starting permutation: rx1 s1 at1 wx sc1 rx1 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); +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 rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; a_id 3 3 3 -invalid permutation detected +step c2: COMMIT; +step s2: BEGIN; +step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; +step sc2: COMMIT; -starting permutation: rx1 s1 at1 wx rx1 sc1 s2 at2 c2 sc2 +starting permutation: rx1 s1 at1 wx rx1 sc1 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; +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 ...> +invalid permutation detected + +starting permutation: rx1 s1 at1 wx rx1 sc1 s2 at2 c2 sc2 +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; a_id -3 -3 -3 +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 ...> invalid permutation detected starting permutation: rx1 s1 at1 wx rx1 sc1 s2 c2 at2 sc2 @@ -2183,14 +2946,8 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id - -3 -3 -3 +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 ...> invalid permutation detected starting permutation: rx1 s1 at1 wx rx1 sc1 c2 s2 at2 sc2 @@ -2199,14 +2956,8 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id - -3 -3 -3 +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 ...> invalid permutation detected starting permutation: rx1 s1 at1 wx rx1 c2 sc1 s2 at2 sc2 @@ -2215,20 +2966,9 @@ a_id 1 step s1: BEGIN; -step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; <waiting ...> -step wx: INSERT INTO b VALUES (0); -step rx1: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id - -3 -3 -3 -step c2: COMMIT; -step at1: <... completed> -step sc1: COMMIT; -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 wx: INSERT INTO b VALUES (0); <waiting ...> +invalid permutation detected starting permutation: rx1 s1 wx at1 sc1 s2 at2 sc2 rx1 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule index c055a53..3e2614e 100644 --- a/src/test/isolation/isolation_schedule +++ b/src/test/isolation/isolation_schedule @@ -34,4 +34,7 @@ test: skip-locked-3 test: skip-locked-4 test: drop-index-concurrently-1 test: alter-table-1 +test: alter-table-2 +test: alter-table-3 +test: create-trigger test: timeouts diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index d233710..1f7c265 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -1952,9 +1952,9 @@ create trigger ttdummy execute procedure ttdummy (1, 1); select * from my_locks order by 1; - relname | max_lockmode ------------+--------------------- - alterlock | AccessExclusiveLock + relname | max_lockmode +-----------+----------------------- + alterlock | ShareRowExclusiveLock (1 row) rollback; @@ -1966,10 +1966,10 @@ select * from my_locks order by 1; alter table alterlock2 add foreign key (f1) references alterlock (f1); select * from my_locks order by 1; - relname | max_lockmode ------------------+--------------------- - alterlock | AccessExclusiveLock - alterlock2 | AccessExclusiveLock + relname | max_lockmode +-----------------+----------------------- + alterlock | ShareRowExclusiveLock + alterlock2 | ShareRowExclusiveLock alterlock2_pkey | AccessShareLock alterlock_pkey | AccessShareLock (4 rows) @@ -1979,10 +1979,10 @@ begin; alter table alterlock2 add constraint alterlock2nv foreign key (f1) references alterlock (f1) NOT VALID; select * from my_locks order by 1; - relname | max_lockmode -------------+--------------------- - alterlock | AccessExclusiveLock - alterlock2 | AccessExclusiveLock + relname | max_lockmode +------------+----------------------- + alterlock | ShareRowExclusiveLock + alterlock2 | ShareRowExclusiveLock (2 rows) commit;
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers