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

Reply via email to