diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index a0d6867..bd3e42a 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -908,9 +908,10 @@ ERROR: could not serialize access due to read/write dependencies among transact - This lock mode is not automatically acquired by any - PostgreSQL command. - + Acquired by CREATE TRIGGER, ALTER + TRIGGER, and many forms of ALTER TABLE + (see ). + > @@ -957,9 +958,9 @@ ERROR: could not serialize access due to read/write dependencies among transact TRUNCATE, REINDEX, CLUSTER, and VACUUM FULL commands. Many forms of ALTER TABLE also acquire - a lock at this level (see ). - This is also the default lock mode for LOCK TABLE - statements that do not specify a mode explicitly. + a lock at this level. This is also the default lock mode for + LOCK TABLE statements that do not specify + a mode explicitly. diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index b5ef09e..5d2534a 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -405,6 +405,9 @@ ALTER TABLE ALL IN TABLESPACE name mode, and triggers configured as ENABLE ALWAYS will fire regardless of the current replication mode. + + This command acquires a SHARE ROW EXCLUSIVE lock. + diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 66d5083..ce5510e 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,15 @@ 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. Note that this does not create risks + * of deadlocks as triggers add added to the pk table using the same + * lock. */ 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..33f8448 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 @@ -526,8 +526,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, * can skip this for internally generated triggers, since the name * modification above should be sufficient. * - * NOTE that this is cool only because we have AccessExclusiveLock on the - * relation, so the trigger set won't be changing underneath us. + * NOTE that this is cool only because of the unique contraint. */ if (!isInternal) { @@ -1103,7 +1102,7 @@ RemoveTriggerById(Oid trigOid) */ relid = ((Form_pg_trigger) GETSTRUCT(tup))->tgrelid; - rel = heap_open(relid, AccessExclusiveLock); + rel = heap_open(relid, ShareRowExclusiveLock); if (rel->rd_rel->relkind != RELKIND_RELATION && rel->rd_rel->relkind != RELKIND_VIEW && @@ -1258,7 +1257,7 @@ renametrig(RenameStmt *stmt) * Look up name, check permissions, and acquire lock (which we will NOT * release until end of transaction). */ - relid = RangeVarGetRelidExtended(stmt->relation, AccessExclusiveLock, + relid = RangeVarGetRelidExtended(stmt->relation, ShareRowExclusiveLock, false, false, RangeVarCallbackForRenameTrigger, NULL); @@ -1272,8 +1271,7 @@ renametrig(RenameStmt *stmt) * on tgrelid/tgname would complain anyway) and to ensure a trigger does * exist with oldname. * - * NOTE that this is cool only because we have AccessExclusiveLock on the - * relation, so the trigger set won't be changing underneath us. + * NOTE that this is cool only because there is a unique constraint. */ tgrel = heap_open(TriggerRelationId, RowExclusiveLock); diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index dd748ac..8eeccf2 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -699,7 +699,8 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty) HeapTuple ht_trig; Form_pg_trigger trigrec; StringInfoData buf; - Relation tgrel; + Snapshot snapshot = RegisterSnapshot(GetTransactionSnapshot()); + Relation tgrel = heap_open(TriggerRelationId, AccessShareLock); ScanKeyData skey[1]; SysScanDesc tgscan; int findx = 0; @@ -710,18 +711,18 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty) /* * Fetch the pg_trigger tuple by the Oid of the trigger */ - tgrel = heap_open(TriggerRelationId, AccessShareLock); - ScanKeyInit(&skey[0], ObjectIdAttributeNumber, BTEqualStrategyNumber, F_OIDEQ, ObjectIdGetDatum(trigid)); tgscan = systable_beginscan(tgrel, TriggerOidIndexId, true, - NULL, 1, skey); + snapshot, 1, skey); ht_trig = systable_getnext(tgscan); + UnregisterSnapshot(snapshot); + if (!HeapTupleIsValid(ht_trig)) elog(ERROR, "could not find tuple for trigger %u", trigid); 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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -invalid permutation detected +step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; +a_id + +1 +step wx: INSERT INTO b VALUES (0); +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; -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; -invalid permutation detected +1 +step wx: INSERT INTO b VALUES (0); +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; -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; -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; +1 +step wx: INSERT INTO b VALUES (0); 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; -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; +step wx: INSERT INTO b VALUES (0); 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; +step wx: INSERT INTO b VALUES (0); 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; +step wx: INSERT INTO b VALUES (0); 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; +step wx: INSERT INTO b VALUES (0); 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; -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; -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; -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; -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; -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; -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; -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; -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); +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); +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); +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); +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); +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); +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); +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; -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); +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; -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); +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; -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); +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; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step wx: INSERT INTO b VALUES (0); 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; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step wx: INSERT INTO b VALUES (0); 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; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step wx: INSERT INTO b VALUES (0); 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; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step wx: INSERT INTO b VALUES (0); 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; +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step wx: INSERT INTO b VALUES (0); 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; step wx: INSERT INTO b VALUES (0); +step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; 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; 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 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; 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 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; 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 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; 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 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; 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 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; -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; -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; -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; 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; -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; 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; -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; 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; -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; 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; 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; +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; 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; 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; +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; 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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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; -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); +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; -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); +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; -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); +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; -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); +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; -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); +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; -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); +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; -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); +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; -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); +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; -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); +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; -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; -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); +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; -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); +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); 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; -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); 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; -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); 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; -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); +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/expected/alter-table-2.out b/src/test/isolation/expected/alter-table-2.out new file mode 100644 index 0000000..cef7516 --- /dev/null +++ b/src/test/isolation/expected/alter-table-2.out @@ -0,0 +1,1389 @@ +Parsed test spec with 2 sessions + +starting permutation: s1a s1b s1c s2a s2b s2c s2d s2e s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s1b s2a s1c s2b s2c s2d s2e s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s1b s2a s2b s1c s2c s2d s2e s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s1c s2d s2e s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s2d s1c s2e s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s2d s2e s1c s2f +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s1b s2a s2b s2c s2d s2e s2f s1c +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s1b s1c s2b s2c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s1b s2b s1c s2c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s1c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s2d s1c s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s2d s2e s1c s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s1b s2b s2c s2d s2e s2f s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s1c s2c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s1c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s2d s1c s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s2d s2e s1c s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s2c s2d s2e s2f s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s1b s1c s2d s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s2b s2c s1b s2d s1c s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s1a s2a s2b s2c s1b s2d s2e s1c s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s1b s2d s2e s2f s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s2d s1b s1c s2e s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s2d s1b s2e s1c s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s2d s1b s2e s2f s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s1a s2a s2b s2c s2d s2e s1b s1c s2f +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s2d s2e s1b s2f s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s1a s2a s2b s2c s2d s2e s2f s1b s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s1a s1b s1c s2b s2c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s1b s2b s1c s2c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s1c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s2d s1c s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s2d s2e s1c s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s1b s2b s2c s2d s2e s2f s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s1c s2c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s1c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s2d s1c s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s2d s2e s1c s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s2c s2d s2e s2f s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s1b s1c s2d s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s2b s2c s1b s2d s1c s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s1a s2b s2c s1b s2d s2e s1c s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s1b s2d s2e s2f s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s2d s1b s1c s2e s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s2d s1b s2e s1c s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s2d s1b s2e s2f s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s1a s2b s2c s2d s2e s1b s1c s2f +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s1a s2b s2c s2d s2e s2f s1b s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s2b s1a s1b s1c s2c s2d s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s1c s2d s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s2d s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s2d s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s1b s2c s2d s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s1b s1c s2d s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s1a s2c s1b s2d s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s1a s2c s1b s2d s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s1b s2d s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s2d s1b s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s2d s1b s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s2d s1b s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s1a s2c s2d s2e s1b s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s2d s2e s1b s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s1a s2c s2d s2e s2f s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s1c s2d s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s2d s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +step s1c: COMMIT; +step s2d: <... completed> +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s2d s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s1b s2d s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2d: INSERT INTO b VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s2d s1b s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s2d s1b s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s2d s1b s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s1a s2d s2e s1b s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s2d s2e s1b s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s1a s2d s2e s2f s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s1a: BEGIN; +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s1a s1b s1c s2e s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s2c s2d s1a s1b s2e s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +invalid permutation detected + +starting permutation: s2a s2b s2c s2d s1a s1b s2e s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s1a s2e s1b s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s2c s2d s1a s2e s1b s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s2e: INSERT INTO a VALUES (4); +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s1a s2e s2f s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s1a: BEGIN; +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s2e s1a s1b s1c s2f +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +invalid permutation detected + +starting permutation: s2a s2b s2c s2d s2e s1a s1b s2f s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s2f: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s2e s1a s2f s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s1a: BEGIN; +step s2f: COMMIT; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s2e s2f s1a s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; +a_id + +3 +step s2d: INSERT INTO b VALUES (0); +step s2e: INSERT INTO a VALUES (4); +step s2f: COMMIT; +step s1a: BEGIN; +step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; +step s1c: COMMIT; diff --git a/src/test/isolation/expected/alter-table-3.out b/src/test/isolation/expected/alter-table-3.out new file mode 100644 index 0000000..7dc64df --- /dev/null +++ b/src/test/isolation/expected/alter-table-3.out @@ -0,0 +1,947 @@ +Parsed test spec with 2 sessions + +starting permutation: s1a s1b s1c s1d s2a s2b s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s1c s2a s1d s2b s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2a: BEGIN; +step s1d: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s1c s2a s2b s1d s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s1c s2a s2b s2c s1d s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s1c s2a s2b s2c s2d s1d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s1b s2a s1c s1d s2b s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s1c s2b s1d s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s1c s2b s2c s1d s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s1c s2b s2c s2d s1d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s1b s2a s2b s1c s1d s2c s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s1c s2c s1d s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s1c s2c s2d s1d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s1b s2a s2b s2c s1c s1d s2d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s1c s2d s1d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s1a s1b s2a s2b s2c s2d s1c s1d +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s1b s1c s1d s2b s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s1c s2b s1d s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s1c s2b s2c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s1c s2b s2c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s1b s2b s1c s1d s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s1c s2c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s1c s2c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s1b s2b s2c s1c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s1c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s1a s2a s1b s2b s2c s2d s1c s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s1c s1d s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s1b s1c s2c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s1b s1c s2c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s2c s1c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s1c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s2c s2d s1c s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s1b s1c s1d s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s2c s1b s1c s2d s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2d: COMMIT; +step s1d: COMMIT; + +starting permutation: s1a s2a s2b s2c s1b s2d s1c s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2d: COMMIT; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s1a s2a s2b s2c s2d s1b s1c s1d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s1a s1b s1c s1d s2b s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s1c s2b s1d s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s1c s2b s2c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s1c s2b s2c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s1b s2b s1c s1d s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s1c s2c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s1c s2c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s1b s2b s2c s1c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s1c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s2a s1a s1b s2b s2c s2d s1c s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s1c s1d s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s1b s1c s2c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s1b s1c s2c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s2c s1c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s1c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s2c s2d s1c s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s1b s1c s1d s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s2c s1b s1c s2d s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2d: COMMIT; +step s1d: COMMIT; + +starting permutation: s2a s1a s2b s2c s1b s2d s1c s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2d: COMMIT; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s1a s2b s2c s2d s1b s1c s1d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s2b s1a s1b s1c s1d s2c s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s1b s1c s2c s1d s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s1b s1c s2c s2d s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s1b s2c s1c s1d s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2c: <... completed> +error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s1c s2d s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +step s1c: ALTER TABLE a ENABLE TRIGGER t; +invalid permutation detected + +starting permutation: s2a s2b s1a s1b s2c s2d s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2c: INSERT INTO a VALUES (0); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s1b s1c s1d s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s2c s1b s1c s2d s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2d: COMMIT; +step s1d: COMMIT; + +starting permutation: s2a s2b s1a s2c s1b s2d s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2d: COMMIT; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s2b s1a s2c s2d s1b s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s1c s1d s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; +step s2d: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s1c s2d s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s2d: COMMIT; +step s1d: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s2d s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s2d: COMMIT; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s2b s2c s1a s2d s1b s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s1a: BEGIN; +step s2d: COMMIT; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; + +starting permutation: s2a s2b s2c s2d s1a s1b s1c s1d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; +i + +1 +step s2c: INSERT INTO a VALUES (0); +ERROR: duplicate key value violates unique constraint "a_pkey" +step s2d: COMMIT; +step s1a: BEGIN; +step s1b: ALTER TABLE a DISABLE TRIGGER t; +step s1c: ALTER TABLE a ENABLE TRIGGER t; +step s1d: COMMIT; diff --git a/src/test/isolation/expected/create-trigger.out b/src/test/isolation/expected/create-trigger.out new file mode 100644 index 0000000..e8bb740 --- /dev/null +++ b/src/test/isolation/expected/create-trigger.out @@ -0,0 +1,421 @@ +Parsed test spec with 2 sessions + +starting permutation: s1a s1b s1c s2a s2b s2c s2d +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s1c s2b s2c s2d +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2a: BEGIN; +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s1c s2c s2d +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s1c s2d +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s1a s1b s2a s2b s2c s2d s1c +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s1a s2a s1b s1c s2b s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s1c s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s1c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s1a s2a s1b s2b s2c s2d s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s1a s2a s2b s1b s1c s2c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s1c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s1a s2a s2b s1b s2c s2d s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s1b s1c s2d +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +invalid permutation detected + +starting permutation: s1a s2a s2b s2c s1b s2d s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2d: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s1a s2a s2b s2c s2d s1b s1c +step s1a: BEGIN; +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; + +starting permutation: s2a s1a s1b s1c s2b s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s1c s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s1c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s2a s1a s1b s2b s2c s2d s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s2a s1a s2b s1b s1c s2c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s1c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s2a s1a s2b s1b s2c s2d s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s1b s1c s2d +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +invalid permutation detected + +starting permutation: s2a s1a s2b s2c s1b s2d s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2d: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s1a s2b s2c s2d s1b s1c +step s2a: BEGIN; +step s1a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; + +starting permutation: s2a s2b s1a s1b s1c s2c s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s1c s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1c: COMMIT; +step s2c: <... completed> +step s2d: COMMIT; + +starting permutation: s2a s2b s1a s1b s2c s2d s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2c: UPDATE a SET i = 4 WHERE i = 3; +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s1b s1c s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +invalid permutation detected + +starting permutation: s2a s2b s1a s2c s1b s2d s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2d: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s1a s2c s2d s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s1a: BEGIN; +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s1a s1b s1c s2d +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +invalid permutation detected + +starting permutation: s2a s2b s2c s1a s1b s2d s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s2d: COMMIT; +step s1b: <... completed> +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s1a s2d s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s1a: BEGIN; +step s2d: COMMIT; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; + +starting permutation: s2a s2b s2c s2d s1a s1b s1c +step s2a: BEGIN; +step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; +i + +1 +step s2c: UPDATE a SET i = 4 WHERE i = 3; +step s2d: COMMIT; +step s1a: BEGIN; +step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +step s1c: COMMIT; 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/isolation/specs/alter-table-2.spec b/src/test/isolation/specs/alter-table-2.spec new file mode 100644 index 0000000..e6a02e0 --- /dev/null +++ b/src/test/isolation/specs/alter-table-2.spec @@ -0,0 +1,30 @@ +# ALTER TABLE - Add foreign keys with concurrent reads +# +# ADD CONSTRAINT uses ShareRowExclusiveLock so we mix writes with it +# to see what works or waits. + +setup +{ + CREATE TABLE a (i int PRIMARY KEY); + CREATE TABLE b (a_id int); + INSERT INTO a VALUES (0), (1), (2), (3); + INSERT INTO b SELECT generate_series(1,1000) % 4; +} + +teardown +{ + DROP TABLE a, b; +} + +session "s1" +step "s1a" { BEGIN; } +step "s1b" { ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; } +step "s1c" { COMMIT; } + +session "s2" +step "s2a" { BEGIN; } +step "s2b" { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } +step "s2c" { SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; } +step "s2d" { INSERT INTO b VALUES (0); } +step "s2e" { INSERT INTO a VALUES (4); } +step "s2f" { COMMIT; } diff --git a/src/test/isolation/specs/alter-table-3.spec b/src/test/isolation/specs/alter-table-3.spec new file mode 100644 index 0000000..d252620 --- /dev/null +++ b/src/test/isolation/specs/alter-table-3.spec @@ -0,0 +1,30 @@ +# ALTER TABLE - Enable and disable triggers with concurrent reads +# +# ENABLE/DISABLE TRIGGER uses ShareRowExclusiveLock so we mix writes with +# it to see what works or waits. + +setup +{ + CREATE TABLE a (i int PRIMARY KEY); + INSERT INTO a VALUES (0), (1), (2), (3); + CREATE FUNCTION f() RETURNS TRIGGER LANGUAGE plpgsql AS 'BEGIN RETURN NULL; END;'; + CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); +} + +teardown +{ + DROP TABLE a; + DROP FUNCTION f(); +} + +session "s1" +step "s1a" { BEGIN; } +step "s1b" { ALTER TABLE a DISABLE TRIGGER t; } +step "s1c" { ALTER TABLE a ENABLE TRIGGER t; } +step "s1d" { COMMIT; } + +session "s2" +step "s2a" { BEGIN; } +step "s2b" { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } +step "s2c" { INSERT INTO a VALUES (0); } +step "s2d" { COMMIT; } diff --git a/src/test/isolation/specs/create-trigger.spec b/src/test/isolation/specs/create-trigger.spec new file mode 100644 index 0000000..34fad75 --- /dev/null +++ b/src/test/isolation/specs/create-trigger.spec @@ -0,0 +1,28 @@ +# CREATE TRIGGER - Add trigger with concurrent reads +# +# CREATE TRIGGER uses ShareRowExclusiveLock so we mix writes with it +# to see what works or waits. + +setup +{ + CREATE TABLE a (i int); + CREATE FUNCTION f() RETURNS TRIGGER LANGUAGE plpgsql AS 'BEGIN RETURN NULL; END;'; + INSERT INTO a VALUES (0), (1), (2), (3); +} + +teardown +{ + DROP TABLE a; + DROP FUNCTION f(); +} + +session "s1" +step "s1a" { BEGIN; } +step "s1b" { CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); } +step "s1c" { COMMIT; } + +session "s2" +step "s2a" { BEGIN; } +step "s2b" { SELECT * FROM a WHERE i = 1 FOR UPDATE; } +step "s2c" { UPDATE a SET i = 4 WHERE i = 3; } +step "s2d" { COMMIT; } 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;