diff --git a/pkg/ccl/schemachangerccl/testdata/end_to_end/create_index b/pkg/ccl/schemachangerccl/testdata/end_to_end/create_index index 4fd67df9a484..2a211442cf1b 100644 --- a/pkg/ccl/schemachangerccl/testdata/end_to_end/create_index +++ b/pkg/ccl/schemachangerccl/testdata/end_to_end/create_index @@ -157,6 +157,20 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": id + + "2": name + + "3": money + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t1_pkey + + "2": id1 + + name: t1 + relevantStatements: + - statement: + redactedStatement: CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›.‹t1› (‹id›, @@ -457,6 +471,20 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": id + - "2": name + - "3": money + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t1_pkey + - "2": id1 + - name: t1 - relevantStatements: - - statement: - redactedStatement: CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›.‹t1› (‹id›, diff --git a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_database_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_database_multiregion_primary_region index 5ed0f98c83a5..adee6b9b8f6f 100644 --- a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_database_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_database_multiregion_primary_region @@ -99,6 +99,9 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 104 + + name: multi_region_test_db + relevantStatements: + - statement: + redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE @@ -124,6 +127,9 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 105 + + name: public + relevantStatements: + - statement: + redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE @@ -147,6 +153,9 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 106 + + name: crdb_internal_region + relevantStatements: + - statement: + redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE @@ -171,6 +180,9 @@ upsert descriptor #107 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 107 + + name: _crdb_internal_region + relevantStatements: + - statement: + redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE @@ -195,6 +207,9 @@ upsert descriptor #108 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 108 + + name: table_regional_by_table + relevantStatements: + - statement: + redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE @@ -233,6 +248,9 @@ upsert descriptor #108 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 108 + - name: table_regional_by_table - relevantStatements: - - statement: - redactedStatement: DROP DATABASE ‹multi_region_test_db› CASCADE diff --git a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion index e24c2659cfc3..9cb957b5362f 100644 --- a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion +++ b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion @@ -74,6 +74,7 @@ upsert descriptor #106 + authorization: + userName: root + jobId: "1" + + nameMapping: {} enumMembers: - logicalRepresentation: us-east1 ... @@ -94,6 +95,7 @@ upsert descriptor #107 + authorization: + userName: root + jobId: "1" + + nameMapping: {} id: 107 kind: ALIAS ... @@ -112,6 +114,9 @@ upsert descriptor #108 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 108 + + name: table_regional_by_row + relevantStatements: + - statement: + redactedStatement: DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_row› @@ -147,6 +152,7 @@ upsert descriptor #106 - authorization: - userName: root - jobId: "1" + - nameMapping: {} enumMembers: - logicalRepresentation: us-east1 ... @@ -162,6 +168,7 @@ upsert descriptor #107 - authorization: - userName: root - jobId: "1" + - nameMapping: {} id: 107 kind: ALIAS ... @@ -178,6 +185,9 @@ upsert descriptor #108 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 108 + - name: table_regional_by_row - relevantStatements: - - statement: - redactedStatement: DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_row› diff --git a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion_primary_region index e65da701ad43..eb05d6e06a21 100644 --- a/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/end_to_end/drop_table_multiregion_primary_region @@ -67,6 +67,7 @@ upsert descriptor #106 + authorization: + userName: root + jobId: "1" + + nameMapping: {} enumMembers: - logicalRepresentation: us-east1 ... @@ -88,6 +89,9 @@ upsert descriptor #108 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 108 + + name: table_regional_by_table + relevantStatements: + - statement: + redactedStatement: DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_table› @@ -125,6 +129,7 @@ upsert descriptor #106 - authorization: - userName: root - jobId: "1" + - nameMapping: {} enumMembers: - logicalRepresentation: us-east1 ... @@ -141,6 +146,9 @@ upsert descriptor #108 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 108 + - name: table_regional_by_table - relevantStatements: - - statement: - redactedStatement: DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_table› diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index b/pkg/ccl/schemachangerccl/testdata/explain/create_index index 6c52d50148d4..4795194a4e83 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index @@ -11,19 +11,19 @@ Schema change plan for CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›. ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── ABSENT → TRANSIENT_ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── ABSENT → TRANSIENT_ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeAbsentIndexBackfilling {"IsSecondaryIndex":true} │ ├── AddIndexPartitionInfo {"Partitioning":{"IndexID":2,"TableID":104}} @@ -39,36 +39,36 @@ Schema change plan for CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›. ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 7 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── ABSENT → TRANSIENT_ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── ABSENT → TRANSIENT_ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 15 Mutation operations │ ├── MakeAbsentIndexBackfilling {"IsSecondaryIndex":true} │ ├── MaybeAddSplitForIndex {"IndexID":2,"TableID":104} @@ -88,57 +88,57 @@ Schema change plan for CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›. ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t1), IndexID: 3} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":2,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 8 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -150,8 +150,8 @@ Schema change plan for CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›. │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 4 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_1_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_1_of_7 index 529562911600..c29eb4256df1 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_1_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_1_of_7 @@ -12,18 +12,18 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 12 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} └── 12 Mutation operations ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"Ordinal":1,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_2_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_2_of_7 index 253d7e26036c..56373a43c865 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_2_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_2_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"Ordinal":1,"TableID":104} @@ -37,9 +37,9 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_3_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_3_of_7 index cc4c66806186..4f2f9d5402ca 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_3_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_3_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"Ordinal":1,"TableID":104} @@ -37,9 +37,9 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_4_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_4_of_7 index 4dd1f6ebd6f8..704722bb36ad 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_4_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_4_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"Ordinal":1,"TableID":104} @@ -37,9 +37,9 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_5_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_5_of_7 index af81bfc96493..41067bd2d9c9 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_5_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_5_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":3,"TableID":104} @@ -37,10 +37,10 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_6_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_6_of_7 index 4abe03017640..1f0d3260af4a 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_6_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_6_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":3,"TableID":104} @@ -37,10 +37,10 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_7_of_7 b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_7_of_7 index 787419bd63c0..0672b67cb5a5 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_7_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain/create_index.rollback_7_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ │ ├── TRANSIENT_ABSENT → ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} @@ -37,10 +37,10 @@ Schema change plan for rolling back CREATE INDEX ‹id1› ON ‹defaultdb›.pu │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t1), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region index b4e64e1517a8..bbf5ceed693f 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region @@ -11,58 +11,58 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 52 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: root} - │ │ ├── PUBLIC → DROPPED Database:{DescID: 104} - │ │ ├── PUBLIC → ABSENT DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} - │ │ ├── PUBLIC → ABSENT DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── PUBLIC → DROPPED Schema:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 105, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED EnumType:{DescID: 106} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east1} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east2} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east3} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: root} - │ │ ├── PUBLIC → DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Database:{DescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} + │ │ ├── PUBLIC → ABSENT DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Schema:{DescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} + │ │ ├── PUBLIC → DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107 (_crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} + │ │ ├── PUBLIC → DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ └── 47 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── NotImplementedForPublicObjects {"DescID":106,"ElementType":"scpb.EnumTypeVal..."} @@ -114,115 +114,115 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 52 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 104} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: public} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: root} - │ │ │ ├── DROPPED → PUBLIC Database:{DescID: 104} - │ │ │ ├── ABSENT → PUBLIC DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} - │ │ │ ├── ABSENT → PUBLIC DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: public} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: root} - │ │ │ ├── DROPPED → PUBLIC Schema:{DescID: 105} - │ │ │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 105, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: public} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: root} - │ │ │ ├── DROPPED → PUBLIC EnumType:{DescID: 106} - │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106, Name: us-east1} - │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106, Name: us-east2} - │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106, Name: us-east3} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 106, ReferencedDescID: 105} - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 107} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107, Name: public} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107, Name: root} - │ │ │ ├── DROPPED → PUBLIC AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 107, ReferencedDescID: 105} - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: root} - │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ │ ├── ABSENT → PUBLIC TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Database:{DescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} + │ │ │ ├── ABSENT → PUBLIC DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105 (public-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (public-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (public-), Name: "public"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (public-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Schema:{DescID: 105 (public-)} + │ │ │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106 (crdb_internal_region-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC EnumType:{DescID: 106 (crdb_internal_region-)} + │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} + │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} + │ │ │ ├── ABSENT → PUBLIC EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 107 (_crdb_internal_region-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108 (table_regional_by_table-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108 (table_regional_by_table-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} + │ │ │ ├── ABSENT → PUBLIC TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 53 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: root} - │ │ ├── PUBLIC → DROPPED Database:{DescID: 104} - │ │ ├── PUBLIC → ABSENT DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} - │ │ ├── PUBLIC → ABSENT DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── PUBLIC → DROPPED Schema:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 105, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED EnumType:{DescID: 106} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east1} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east2} - │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106, Name: us-east3} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: public} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: root} - │ │ ├── PUBLIC → DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Database:{DescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} + │ │ ├── PUBLIC → ABSENT DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (public-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Schema:{DescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} + │ │ ├── PUBLIC → DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} + │ │ ├── PUBLIC → ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107 (_crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} + │ │ ├── PUBLIC → DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} + │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ └── 64 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── NotImplementedForPublicObjects {"DescID":106,"ElementType":"scpb.EnumTypeVal..."} @@ -291,14 +291,14 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Database:{DescID: 104} - │ ├── PUBLIC → ABSENT DatabaseData:{DescID: 104} - │ ├── DROPPED → ABSENT Schema:{DescID: 105} - │ ├── DROPPED → ABSENT EnumType:{DescID: 106} - │ ├── DROPPED → ABSENT AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} - │ ├── DROPPED → ABSENT Table:{DescID: 108} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 108, IndexID: 1} - │ └── PUBLIC → ABSENT TableData:{DescID: 108, ReferencedDescID: 104} + │ ├── DROPPED → ABSENT Database:{DescID: 104 (multi_region_test_db-)} + │ ├── PUBLIC → ABSENT DatabaseData:{DescID: 104 (multi_region_test_db-)} + │ ├── DROPPED → ABSENT Schema:{DescID: 105 (public-)} + │ ├── DROPPED → ABSENT EnumType:{DescID: 106 (crdb_internal_region-)} + │ ├── DROPPED → ABSENT AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} + │ ├── DROPPED → ABSENT Table:{DescID: 108 (table_regional_by_table-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-)} + │ └── PUBLIC → ABSENT TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db-)} └── 13 Mutation operations ├── DeleteDescriptor {"DescriptorID":104} ├── CreateGCJobForDatabase {"DatabaseID":104} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion index fb6b838ca30c..2fe4841cea2f 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion @@ -11,33 +11,33 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 27 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TablePartitioning:{DescID: 108} - │ │ ├── PUBLIC → ABSENT TableLocalityRegionalByRow:{DescID: 108} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: k, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 108, IndexID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} + │ │ ├── PUBLIC → ABSENT TablePartitioning:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ └── 24 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} @@ -66,66 +66,66 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 27 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: root} - │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ │ ├── ABSENT → PUBLIC TablePartitioning:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC TableLocalityRegionalByRow:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: k, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} - │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 108, IndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108 (table_regional_by_row-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108 (table_regional_by_row-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} + │ │ │ ├── ABSENT → PUBLIC TablePartitioning:{DescID: 108 (table_regional_by_row-)} + │ │ │ ├── ABSENT → PUBLIC TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} + │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} + │ │ │ ├── ABSENT → PUBLIC IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 29 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TablePartitioning:{DescID: 108} - │ │ ├── PUBLIC → ABSENT TableLocalityRegionalByRow:{DescID: 108} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: k, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 108, IndexID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} + │ │ ├── PUBLIC → ABSENT TablePartitioning:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 1 (table_regional_by_row_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 1 (table_regional_by_row_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ └── 42 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} @@ -172,9 +172,9 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Table:{DescID: 108} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 108, IndexID: 1} - │ └── PUBLIC → ABSENT TableData:{DescID: 108, ReferencedDescID: 104} + │ ├── DROPPED → ABSENT Table:{DescID: 108 (table_regional_by_row-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} + │ └── PUBLIC → ABSENT TableData:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 104 (multi_region_test_db)} └── 6 Mutation operations ├── CreateGCJobForTable {"DatabaseID":104,"TableID":108} ├── CreateGCJobForIndex {"IndexID":1,"TableID":108} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region index 082fe55545c6..5befe80d867d 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region @@ -11,26 +11,26 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 20 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} + │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ └── 17 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} @@ -52,51 +52,51 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 20 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108, Name: root} - │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ │ ├── ABSENT → PUBLIC TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 108 (table_regional_by_table-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 108 (table_regional_by_table-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} + │ │ │ ├── ABSENT → PUBLIC TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 21 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 108} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} - │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 108, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 108 (table_regional_by_table-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} + │ │ ├── PUBLIC → ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ └── 30 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} @@ -131,9 +131,9 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Table:{DescID: 108} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 108, IndexID: 1} - │ └── PUBLIC → ABSENT TableData:{DescID: 108, ReferencedDescID: 104} + │ ├── DROPPED → ABSENT Table:{DescID: 108 (table_regional_by_table-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-)} + │ └── PUBLIC → ABSENT TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db)} └── 5 Mutation operations ├── CreateGCJobForTable {"DatabaseID":104,"TableID":108} ├── CreateGCJobForIndex {"IndexID":1,"TableID":108} diff --git a/pkg/ccl/schemachangerccl/testdata/explain_shape/create_index b/pkg/ccl/schemachangerccl/testdata/explain_shape/create_index new file mode 100644 index 000000000000..07bb80315927 --- /dev/null +++ b/pkg/ccl/schemachangerccl/testdata/explain_shape/create_index @@ -0,0 +1,19 @@ +/* setup */ +CREATE TABLE defaultdb.t1 (id INT PRIMARY KEY, name VARCHAR(256), money INT); + +/* test */ +EXPLAIN (ddl, shape) CREATE INDEX id1 + ON defaultdb.t1 (id, name) + STORING (money) + PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1)); +---- +Schema change plan for CREATE INDEX ‹id1› ON ‹defaultdb›.‹public›.‹t1› (‹id›, ‹name›) STORING (‹money›) PARTITION BY LIST (‹id›) (PARTITION ‹p1› VALUES IN (‹1›)); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t1_pkey in relation t1 + │ └── into id1+ (id, name, money) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t1 + │ └── from t1@[3] into id1+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index id1+ in relation t1 + └── execute 2 system table mutations transactions diff --git a/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_database_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_database_multiregion_primary_region new file mode 100644 index 000000000000..d58049592642 --- /dev/null +++ b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_database_multiregion_primary_region @@ -0,0 +1,11 @@ +/* setup */ +CREATE DATABASE multi_region_test_db PRIMARY REGION "us-east1" REGIONS "us-east2", "us-east3" SURVIVE REGION FAILURE; +CREATE TABLE multi_region_test_db.public.table_regional_by_table ( + a INT PRIMARY KEY +) LOCALITY REGIONAL BY TABLE IN "us-east2"; + +/* test */ +EXPLAIN (ddl, shape) DROP DATABASE multi_region_test_db CASCADE; +---- +Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; + └── execute 2 system table mutations transactions diff --git a/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion new file mode 100644 index 000000000000..0a985b6c73b7 --- /dev/null +++ b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion @@ -0,0 +1,11 @@ +/* setup */ +CREATE DATABASE multi_region_test_db PRIMARY REGION "us-east1" REGIONS "us-east2", "us-east3" SURVIVE REGION FAILURE; +CREATE TABLE multi_region_test_db.public.table_regional_by_row ( + k INT PRIMARY KEY +) LOCALITY REGIONAL BY ROW; + +/* test */ +EXPLAIN (ddl, shape) DROP TABLE multi_region_test_db.public.table_regional_by_row; +---- +Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_row›; + └── execute 2 system table mutations transactions diff --git a/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion_primary_region new file mode 100644 index 000000000000..cfb57290cd51 --- /dev/null +++ b/pkg/ccl/schemachangerccl/testdata/explain_shape/drop_table_multiregion_primary_region @@ -0,0 +1,11 @@ +/* setup */ +CREATE DATABASE multi_region_test_db PRIMARY REGION "us-east1" REGIONS "us-east2", "us-east3" SURVIVE REGION FAILURE; +CREATE TABLE multi_region_test_db.public.table_regional_by_table ( + a INT PRIMARY KEY +) LOCALITY REGIONAL BY TABLE IN "us-east2"; + +/* test */ +EXPLAIN (ddl, shape) DROP TABLE multi_region_test_db.public.table_regional_by_table CASCADE; +---- +Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹table_regional_by_table› CASCADE; + └── execute 2 system table mutations transactions diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index index a8b530817871..a0a881f569f7 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index @@ -15,78 +15,78 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} +│ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: id1, IndexID: 2} +│ │ └── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} +│ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ │ ABSENT → TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 11 Mutation operations @@ -186,42 +186,42 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: id1, IndexID: 2} +│ │ │ └── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} +│ │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -233,78 +233,78 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} +│ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: id1, IndexID: 2} +│ │ └── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} +│ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ │ ABSENT → TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 15 Mutation operations @@ -430,25 +430,25 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -468,22 +468,22 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -497,10 +497,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -520,10 +520,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -543,10 +543,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -560,10 +560,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -583,13 +583,13 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: id1, IndexID: 2} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 1 Validation operation @@ -604,51 +604,51 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1+), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 8 Mutation operations @@ -693,28 +693,28 @@ EXPLAIN (ddl, verbose) CREATE INDEX id1 │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 4 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_1_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_1_of_7 index 357271c19a32..5951859eec07 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_1_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_1_of_7 @@ -16,97 +16,97 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 12 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index no longer public before index name" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ TRANSIENT_ABSENT → ABSENT │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 12 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_2_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_2_of_7 index 73d8a7b5111b..61536190920c 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_2_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_2_of_7 @@ -16,79 +16,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -152,37 +152,37 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_3_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_3_of_7 index fd3a66bf38bd..cc0556ff835a 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_3_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_3_of_7 @@ -16,79 +16,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -152,37 +152,37 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_4_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_4_of_7 index 381b64260a03..a480c9a3277c 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_4_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_4_of_7 @@ -16,79 +16,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -152,37 +152,37 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_5_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_5_of_7 index 89bbaa61f512..bbfe20f2b8e9 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_5_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_5_of_7 @@ -16,64 +16,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -137,58 +137,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_6_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_6_of_7 index a4b96a63db3c..4d787c8e03fa 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_6_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_6_of_7 @@ -16,64 +16,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -137,58 +137,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_7_of_7 b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_7_of_7 index 89785ea48b7f..f72a248f6ba0 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_7_of_7 +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/create_index.rollback_7_of_7 @@ -16,64 +16,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ TRANSIENT_ABSENT → ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -137,58 +137,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 2 (id1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: id1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t1), Name: "id1", IndexID: 2 (id1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t1), IndexID: 2 (id1-), TemporaryIndexID: 3, SourceIndexID: 1 (t1_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 104 (t1), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 1 (id), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 2 (name), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t1), ColumnID: 3 (money), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t1), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t1), IndexID: 2 (id1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t1), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t1_pkey)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_database_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_database_multiregion_primary_region index 872e05b70737..8c9652aae122 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_database_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_database_multiregion_primary_region @@ -15,365 +15,365 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ │ ├── • 52 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} +│ │ ├── • Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 104} +│ │ ├── • Owner:{DescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: public} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: root} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Database:{DescID: 104} +│ │ ├── • Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → DROPPED │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105, ReferencedDescID: 104} +│ │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ -│ │ ├── • DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} +│ │ ├── • DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} +│ │ ├── • DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ -│ │ ├── • Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: public} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Schema:{DescID: 105} +│ │ ├── • Schema:{DescID: 105 (public-)} │ │ │ │ PUBLIC → DROPPED │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 105} +│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 105} +│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ -│ │ ├── • SchemaParent:{DescID: 105, ReferencedDescID: 104} +│ │ ├── • SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: public} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumType:{DescID: 106} +│ │ ├── • EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east1} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east2} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east3} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 107} +│ │ ├── • Owner:{DescID: 107 (_crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: public} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ ├── • AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • SameStagePrecedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 47 Mutation operations @@ -584,160 +584,160 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ │ │ │ ├── • 52 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} +│ │ │ ├── • Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 104} +│ │ │ ├── • Owner:{DescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 104, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 104, Name: public} +│ │ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 104, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Database:{DescID: 104} +│ │ │ ├── • Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} +│ │ │ ├── • DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} +│ │ │ ├── • DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 105} +│ │ │ ├── • Owner:{DescID: 105 (public-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: public} +│ │ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "public"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Schema:{DescID: 105} +│ │ │ ├── • Schema:{DescID: 105 (public-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaParent:{DescID: 105, ReferencedDescID: 104} +│ │ │ ├── • SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 106} +│ │ │ ├── • Owner:{DescID: 106 (crdb_internal_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: public} +│ │ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • EnumType:{DescID: 106} +│ │ │ ├── • EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east1} +│ │ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east2} +│ │ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east3} +│ │ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 105} +│ │ │ ├── • SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 107} +│ │ │ ├── • Owner:{DescID: 107 (_crdb_internal_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 107, Name: public} +│ │ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ ├── • AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 105} +│ │ │ ├── • SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 108} +│ │ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Table:{DescID: 108} +│ │ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -749,413 +749,413 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ │ ├── • 53 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} +│ │ ├── • Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 104} +│ │ ├── • Owner:{DescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: public} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: root} +│ │ ├── • UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Database:{DescID: 104} +│ │ ├── • Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → DROPPED │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105, ReferencedDescID: 104} +│ │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ -│ │ ├── • DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} +│ │ ├── • DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ └── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} +│ │ ├── • DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • Precedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ -│ │ ├── • Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: public} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (public-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Schema:{DescID: 105} +│ │ ├── • Schema:{DescID: 105 (public-)} │ │ │ │ PUBLIC → DROPPED │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 105} +│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 105} +│ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ rule: "back-reference in parent descriptor is removed before parent descriptor is dropped" │ │ │ -│ │ ├── • SchemaParent:{DescID: 105, ReferencedDescID: 104} +│ │ ├── • SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 105} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: public} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumType:{DescID: 106} +│ │ ├── • EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east1} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east2} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • EnumTypeValue:{DescID: 106, Name: us-east3} +│ │ ├── • EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 107} +│ │ ├── • Owner:{DescID: 107 (_crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: public} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ ├── • UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • Precedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ ├── • AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} +│ │ │ └── • SameStagePrecedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106} +│ │ │ ├── • SameStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ │ rule: "descriptor drop right before removing dependent with attr ref" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 64 Mutation operations @@ -1447,199 +1447,199 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Database:{DescID: 104} + │ ├── • Database:{DescID: 104 (multi_region_test_db-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 104, Name: multi_region_test_db, ReferencedDescID: 0} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 104 (multi_region_test_db-), Name: "multi_region_test_db"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 104} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104, Name: public} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "public"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 104 (multi_region_test_db-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Database:{DescID: 104} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Database:{DescID: 104 (multi_region_test_db-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT DatabaseRoleSetting:{DescID: 104, Name: __placeholder_role_name__} + │ │ ├── • Precedence dependency from ABSENT DatabaseRoleSetting:{DescID: 104 (multi_region_test_db-), Name: "__placeholder_role_name__"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT DatabaseRegionConfig:{DescID: 104, ReferencedDescID: 106} + │ │ └── • Precedence dependency from ABSENT DatabaseRegionConfig:{DescID: 104 (multi_region_test_db-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • DatabaseData:{DescID: 104} + │ ├── • DatabaseData:{DescID: 104 (multi_region_test_db-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT Database:{DescID: 104} + │ │ └── • SameStagePrecedence dependency from ABSENT Database:{DescID: 104 (multi_region_test_db-)} │ │ rule: "descriptor removed right before garbage collection" │ │ - │ ├── • Schema:{DescID: 105} + │ ├── • Schema:{DescID: 105 (public-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 105, Name: public, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 105 (public-), Name: "public", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (public-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (public-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: public} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (public-), Name: "public"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (public-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Schema:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Schema:{DescID: 105 (public-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105, ReferencedDescID: 104} + │ │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 105 (public-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • EnumType:{DescID: 106} + │ ├── • EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106, Name: crdb_internal_region, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106 (crdb_internal_region-), Name: "crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: public} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "public"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (crdb_internal_region-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED EnumType:{DescID: 106} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED EnumType:{DescID: 106 (crdb_internal_region-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106, Name: us-east1} + │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east1"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106, Name: us-east2} + │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east2"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106, Name: us-east3} + │ │ ├── • Precedence dependency from ABSENT EnumTypeValue:{DescID: 106 (crdb_internal_region-), Name: "us-east3"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 105} + │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 106 (crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} + │ ├── • AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 107, Name: _crdb_internal_region, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 107 (_crdb_internal_region-), Name: "_crdb_internal_region", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 107} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 107 (_crdb_internal_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107, Name: public} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "public"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107 (_crdb_internal_region-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED AliasType:{DescID: 107, ReferencedTypeIDs: [106 107]} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED AliasType:{DescID: 107 (_crdb_internal_region-), ReferencedTypeIDs: [106 (crdb_internal_region-), 107 (_crdb_internal_region-)]} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 105} + │ │ └── • Precedence dependency from ABSENT SchemaChild:{DescID: 107 (_crdb_internal_region-), ReferencedDescID: 105 (public-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Table:{DescID: 108} + │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} + │ │ ├── • Precedence dependency from ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (crdb_internal_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 108, IndexID: 1} + │ ├── • IndexData:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108, ReferencedDescID: 104} + │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • TableData:{DescID: 108, ReferencedDescID: 104} + │ └── • TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db-)} │ │ PUBLIC → ABSENT │ │ - │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108} + │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108 (table_regional_by_table-)} │ rule: "table removed right before garbage collection" │ └── • 13 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion index cf68b26eac69..f7ef82f253d1 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion @@ -15,212 +15,212 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ ├── • 27 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_row-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TablePartitioning:{DescID: 108} +│ │ ├── • TablePartitioning:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • TableLocalityRegionalByRow:{DescID: 108} +│ │ ├── • TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: k, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 2} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 108, IndexID: 1} +│ │ ├── • IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 24 Mutation operations @@ -337,85 +337,85 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ │ │ ├── • 27 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 108} +│ │ │ ├── • Owner:{DescID: 108 (table_regional_by_row-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Table:{DescID: 108} +│ │ │ ├── • Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • TablePartitioning:{DescID: 108} +│ │ │ ├── • TablePartitioning:{DescID: 108 (table_regional_by_row-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • TableLocalityRegionalByRow:{DescID: 108} +│ │ │ ├── • TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: k, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • IndexPartitioning:{DescID: 108, IndexID: 1} +│ │ │ ├── • IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -427,299 +427,299 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ ├── • 29 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_row-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TablePartitioning:{DescID: 108} +│ │ ├── • TablePartitioning:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • TableLocalityRegionalByRow:{DescID: 108} +│ │ ├── • TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: k, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: k, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 2} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 2, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 108, ColumnID: 2, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 2, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 108, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ ├── • IndexPartitioning:{DescID: 108, IndexID: 1} +│ │ ├── • IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 42 Mutation operations @@ -922,109 +922,109 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • Table:{DescID: 108} + │ ├── • Table:{DescID: 108 (table_regional_by_row-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108, Name: table_regional_by_row, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_row-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 105 (public)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT TablePartitioning:{DescID: 108} + │ │ ├── • Precedence dependency from ABSENT TablePartitioning:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT TableLocalityRegionalByRow:{DescID: 108} + │ │ ├── • Precedence dependency from ABSENT TableLocalityRegionalByRow:{DescID: 108 (table_regional_by_row-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108 (table_regional_by_row-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: k, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "k", ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_region, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_region", ColumnID: 2 (crdb_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnFamilyID: 0 (primary-), ColumnID: 2 (crdb_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 2, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 108 (table_regional_by_row-), ReferencedTypeIDs: [106 (#106), 107 (#107)], ColumnID: 2 (crdb_region-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_row-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_row-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_row-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 2 (crdb_region-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_row-), ColumnID: 1 (k-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 108, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexPartitioning:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_row_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_row-), Name: "table_regional_by_row_pkey", IndexID: 1 (table_regional_by_row_pkey-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 108, IndexID: 1} + │ ├── • IndexData:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_row-), IndexID: 1 (table_regional_by_row_pkey-), ConstraintID: 1} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108, ReferencedDescID: 104} + │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 104 (multi_region_test_db)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • TableData:{DescID: 108, ReferencedDescID: 104} + │ └── • TableData:{DescID: 108 (table_regional_by_row-), ReferencedDescID: 104 (multi_region_test_db)} │ │ PUBLIC → ABSENT │ │ - │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108} + │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108 (table_regional_by_row-)} │ rule: "table removed right before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion_primary_region b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion_primary_region index 95131beebdcb..23ea3234a106 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion_primary_region @@ -15,152 +15,152 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ ├── • 20 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 17 Mutation operations @@ -245,64 +245,64 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ │ │ ├── • 20 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 108} +│ │ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Table:{DescID: 108} +│ │ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -314,200 +314,200 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ │ ├── • 21 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 108} +│ │ ├── • Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 108, Name: root} +│ │ ├── • UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 108} +│ │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 108, ReferencedDescID: 105} +│ │ ├── • SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} +│ │ ├── • TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 1} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: a, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 108, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ └── • IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 30 Mutation operations @@ -656,85 +656,85 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • Table:{DescID: 108} + │ ├── • Table:{DescID: 108 (table_regional_by_table-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108, Name: table_regional_by_table, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table", ReferencedDescID: 104 (multi_region_test_db)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 108 (table_regional_by_table-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 108 (table_regional_by_table-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108, ReferencedDescID: 105} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 105 (public)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT TableLocalitySecondaryRegion:{DescID: 108, ReferencedDescID: 106} + │ │ ├── • Precedence dependency from ABSENT TableLocalitySecondaryRegion:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 106 (#106)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 108 (table_regional_by_table-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: a, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "a", ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (a-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108, ColumnID: 1, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 108 (table_regional_by_table-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108, Name: tableoid, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 108 (table_regional_by_table-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108 (table_regional_by_table-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 108 (table_regional_by_table-), ColumnID: 1 (a-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108, Name: table_regional_by_table_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 108 (table_regional_by_table-), Name: "table_regional_by_table_pkey", IndexID: 1 (table_regional_by_table_pkey-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 108, IndexID: 1} + │ ├── • IndexData:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 108 (table_regional_by_table-), IndexID: 1 (table_regional_by_table_pkey-), ConstraintID: 1} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108, ReferencedDescID: 104} + │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • TableData:{DescID: 108, ReferencedDescID: 104} + │ └── • TableData:{DescID: 108 (table_regional_by_table-), ReferencedDescID: 104 (multi_region_test_db)} │ │ PUBLIC → ABSENT │ │ - │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108} + │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 108 (table_regional_by_table-)} │ rule: "table removed right before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/explain_ddl.go b/pkg/sql/explain_ddl.go index 804af2071695..c89712ecfb6d 100644 --- a/pkg/sql/explain_ddl.go +++ b/pkg/sql/explain_ddl.go @@ -105,6 +105,8 @@ func (n *explainDDLNode) setExplainValues( var info string if n.options.Flags[tree.ExplainFlagVerbose] { info, err = p.ExplainVerbose() + } else if n.options.Flags[tree.ExplainFlagShape] { + info, err = p.ExplainShape() } else { info, err = p.ExplainCompact() } diff --git a/pkg/sql/opt/exec/execbuilder/testdata/show_trace b/pkg/sql/opt/exec/execbuilder/testdata/show_trace index 6982e48340d1..50c231761216 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/show_trace +++ b/pkg/sql/opt/exec/execbuilder/testdata/show_trace @@ -165,7 +165,7 @@ query TT $trace_query ---- sql query rows affected: 0 -commit sql txn CPut /Table/3/1/109/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:false default_expr:"unique_rowid()" hidden:true inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:4 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:2 privileges: users: owner_proto:"root" version:2 > next_mutation_id:1 format_version:3 state:DROP offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:DROPPED current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 target_ranks:5 target_ranks:6 target_ranks:7 target_ranks:8 target_ranks:9 target_ranks:10 target_ranks:11 target_ranks:12 target_ranks:13 target_ranks:14 target_ranks:15 target_ranks:16 target_ranks:17 target_ranks:18 target_ranks:19 target_ranks:20 target_ranks:21 target_ranks:22 target_ranks:23 target_ranks:24 target_ranks:25 target_ranks:26 target_ranks:27 target_ranks:28 target_ranks:29 target_ranks:30 relevant_statements: > authorization: > drop_time:... replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"TABLE t.public.kv" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:2 import_start_wall_time:0 schema_locked:false > +commit sql txn CPut /Table/3/1/109/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:false default_expr:"unique_rowid()" hidden:true inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:4 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:2 privileges: users: owner_proto:"root" version:2 > next_mutation_id:1 format_version:3 state:DROP offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:DROPPED current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 target_ranks:5 target_ranks:6 target_ranks:7 target_ranks:8 target_ranks:9 target_ranks:10 target_ranks:11 target_ranks:12 target_ranks:13 target_ranks:14 target_ranks:15 target_ranks:16 target_ranks:17 target_ranks:18 target_ranks:19 target_ranks:20 target_ranks:21 target_ranks:22 target_ranks:23 target_ranks:24 target_ranks:25 target_ranks:26 target_ranks:27 target_ranks:28 target_ranks:29 target_ranks:30 relevant_statements: > authorization: name_mapping: > drop_time:... replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"TABLE t.public.kv" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:2 import_start_wall_time:0 schema_locked:false > commit sql txn Del /NamespaceTable/30/1/106/107/"kv2"/4/1 statement ok @@ -194,7 +194,7 @@ query TT $trace_query ---- sql query rows affected: 0 -commit sql txn CPut /Table/3/1/108/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:false hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:3 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:4 privileges: users: owner_proto:"root" version:2 > mutations: interleave:<> partitioning: type:FORWARD created_explicitly:true encoding_type:0 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:2 not_visible:false invisibility:0 > state:WRITE_ONLY direction:DROP mutation_id:2 rollback:false > next_mutation_id:2 format_version:3 state:PUBLIC offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:PUBLIC current_statuses:PUBLIC current_statuses:VALIDATED current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 relevant_statements: > authorization: > drop_time:0 replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:4 import_start_wall_time:0 schema_locked:false > +commit sql txn CPut /Table/3/1/108/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:false hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:3 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:4 privileges: users: owner_proto:"root" version:2 > mutations: interleave:<> partitioning: type:FORWARD created_explicitly:true encoding_type:0 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:2 not_visible:false invisibility:0 > state:WRITE_ONLY direction:DROP mutation_id:2 rollback:false > next_mutation_id:2 format_version:3 state:PUBLIC offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:PUBLIC current_statuses:PUBLIC current_statuses:VALIDATED current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 relevant_statements: > authorization: name_mapping: columns: columns: columns: families: indexes: > > drop_time:0 replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:4 import_start_wall_time:0 schema_locked:false > statement ok SET tracing = on,kv,results; DROP TABLE t.kv @@ -206,7 +206,7 @@ query TT $trace_query ---- sql query rows affected: 0 -commit sql txn CPut /Table/3/1/108/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:false hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:3 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:4 privileges: users: owner_proto:"root" version:2 > next_mutation_id:2 format_version:3 state:DROP offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:DROPPED current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 target_ranks:5 target_ranks:6 target_ranks:7 target_ranks:8 target_ranks:9 target_ranks:10 target_ranks:11 target_ranks:12 target_ranks:13 target_ranks:14 target_ranks:15 target_ranks:16 target_ranks:17 target_ranks:18 target_ranks:19 target_ranks:20 target_ranks:21 target_ranks:22 target_ranks:23 target_ranks:24 target_ranks:25 relevant_statements: > authorization: > drop_time:... replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:4 import_start_wall_time:0 schema_locked:false > +commit sql txn CPut /Table/3/1/108/2/1 -> table: parent_id:106 unexposed_parent_schema_id:107 columns: nullable:false hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > columns: nullable:true hidden:false inaccessible:false generated_as_identity_type:NOT_IDENTITY_COLUMN virtual:false pg_attribute_num:0 alter_column_type_in_progress:false system_column_kind:NONE > next_column_id:3 families: next_family_id:1 primary_index: interleave:<> partitioning: type:FORWARD created_explicitly:false encoding_type:1 sharded: disabled:false geo_config:<> predicate:"" use_delete_preserving_encoding:false created_at_nanos:... constraint_id:1 not_visible:false invisibility:0 > next_index_id:4 privileges: users: owner_proto:"root" version:2 > next_mutation_id:2 format_version:3 state:DROP offline_reason:"" view_query:"" is_materialized_view:false refresh_view_required:false declarative_schema_changer_state:<...> > metadata:<...> target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > is_nullable:true element_creation_metadata: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > targets: > metadata: target_status:ABSENT > current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:DROPPED current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:ABSENT current_statuses:PUBLIC current_statuses:PUBLIC target_ranks:0 target_ranks:1 target_ranks:2 target_ranks:3 target_ranks:4 target_ranks:5 target_ranks:6 target_ranks:7 target_ranks:8 target_ranks:9 target_ranks:10 target_ranks:11 target_ranks:12 target_ranks:13 target_ranks:14 target_ranks:15 target_ranks:16 target_ranks:17 target_ranks:18 target_ranks:19 target_ranks:20 target_ranks:21 target_ranks:22 target_ranks:23 target_ranks:24 target_ranks:25 relevant_statements: > authorization: name_mapping: > drop_time:... replacement_of: > audit_mode:DISABLED drop_job_id:0 create_query:"" create_as_of_time:<...> temporary:false partition_all_by:false exclude_data_from_backup:false next_constraint_id:4 import_start_wall_time:0 schema_locked:false > commit sql txn Del /NamespaceTable/30/1/106/107/"kv"/4/1 # Check that session tracing does not inhibit the fast path for inserts & diff --git a/pkg/sql/schemachanger/scbuild/build.go b/pkg/sql/schemachanger/scbuild/build.go index 19c55aa47c4e..0355ee7a8b18 100644 --- a/pkg/sql/schemachanger/scbuild/build.go +++ b/pkg/sql/schemachanger/scbuild/build.go @@ -12,6 +12,7 @@ package scbuild import ( "context" + "sort" "unsafe" "github.com/cockroachdb/cockroach/pkg/clusterversion" @@ -97,6 +98,7 @@ func Build( Targets: make([]scpb.Target, 0, len(bs.output)), Statements: els.statements, Authorization: els.authorization, + NameMappings: makeNameMappings(b), } initial := make([]scpb.Status, 0, len(bs.output)) current := make([]scpb.Status, 0, len(bs.output)) @@ -300,6 +302,63 @@ func newBuilderState( return &bs } +func makeNameMappings(b scbuildstmt.BuildCtx) (ret scpb.NameMappings) { + id2Idx := make(map[catid.DescID]int) + getOrCreate := func(id catid.DescID) (_ *scpb.NameMapping, isNew bool) { + if idx, ok := id2Idx[id]; ok { + return &ret[idx], false /* isNew */ + } + idx := len(ret) + id2Idx[id] = idx + ret = append(ret, scpb.NameMapping{ + ID: id, + Indexes: make(map[catid.IndexID]string), + Columns: make(map[catid.ColumnID]string), + Families: make(map[catid.FamilyID]string), + Constraints: make(map[catid.ConstraintID]string), + }) + return &ret[idx], true /* isNew */ + } + isNotDropping := func(ts scpb.TargetStatus) bool { + return ts != scpb.ToAbsent && ts != scpb.Transient + } + scpb.ForEachNamespace(b, func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.Namespace) { + dnm, isNew := getOrCreate(e.DescriptorID) + if isNew || isNotDropping(ts) { + dnm.Name = e.Name + } + }) + scpb.ForEachFunctionName(b, func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.FunctionName) { + dnm, isNew := getOrCreate(e.FunctionID) + if isNew || isNotDropping(ts) { + dnm.Name = e.Name + } + }) + scpb.ForEachIndexName(b, func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.IndexName) { + if idx, ok := id2Idx[e.TableID]; ok && isNotDropping(ts) { + ret[idx].Indexes[e.IndexID] = e.Name + } + }) + scpb.ForEachColumnName(b, func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.ColumnName) { + if idx, ok := id2Idx[e.TableID]; ok && isNotDropping(ts) { + ret[idx].Columns[e.ColumnID] = e.Name + } + }) + scpb.ForEachColumnFamily(b, func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.ColumnFamily) { + if idx, ok := id2Idx[e.TableID]; ok && isNotDropping(ts) { + ret[idx].Families[e.FamilyID] = e.Name + } + }) + scpb.ForEachConstraintWithoutIndexName(b, + func(_ scpb.Status, ts scpb.TargetStatus, e *scpb.ConstraintWithoutIndexName) { + if idx, ok := id2Idx[e.TableID]; ok && isNotDropping(ts) { + ret[idx].Constraints[e.ConstraintID] = e.Name + } + }) + sort.Sort(ret) + return ret +} + // eventLogState is the backing struct for scbuildstmt.EventLogState interface. type eventLogState struct { diff --git a/pkg/sql/schemachanger/scpb/BUILD.bazel b/pkg/sql/schemachanger/scpb/BUILD.bazel index 4404a3f7763a..e784b81834c0 100644 --- a/pkg/sql/schemachanger/scpb/BUILD.bazel +++ b/pkg/sql/schemachanger/scpb/BUILD.bazel @@ -8,6 +8,7 @@ go_library( srcs = [ "constants.go", "migration.go", + "name_mappings.go", "state.go", "transient.go", ":gen-elements-interface", # keep diff --git a/pkg/sql/schemachanger/scpb/name_mappings.go b/pkg/sql/schemachanger/scpb/name_mappings.go new file mode 100644 index 000000000000..1e482bafbcce --- /dev/null +++ b/pkg/sql/schemachanger/scpb/name_mappings.go @@ -0,0 +1,265 @@ +// Copyright 2023 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package scpb + +import ( + "fmt" + "sort" + "strings" + + "github.com/cockroachdb/cockroach/pkg/sql/sem/catid" +) + +// HumanReadableNameProvider maps IDs to human-readable names +// for the purpose of decorating EXPLAIN(DDL) and other +// human-readable output. +type HumanReadableNameProvider interface { + + // Name returns the name mapped to a descriptor ID, falling back + // to a placeholder if none was found. + Name(id catid.DescID) string + + // IndexName returns the name mapped to an index ID, falling back + // to a placeholder if none was found. + IndexName(relationID catid.DescID, indexID catid.IndexID) string + + // ColumnName returns the name mapped to a column ID, falling back + // to a placeholder if none was found. + ColumnName(relationID catid.DescID, columnID catid.ColumnID) string + + // FamilyName returns the name mapped to a family ID, falling back + // to a placeholder if none was found. + FamilyName(relationID catid.DescID, familyID catid.FamilyID) string + + // ConstraintName returns the name mapped to a family ID, falling back + // to a placeholder if none was found. + ConstraintName(relationID catid.DescID, constraintID catid.ConstraintID) string +} + +// TargetState implements the HumanReadableNameProvider interface by mapping +// the selected ID or ID tuple to a name element in the target state if there +// is one. If there is none, then the schema change does not involve name +// elements and TargetState delegates to its NameMappings, effectively falling +// back on the names such as they were prior to the schema change. +var _ HumanReadableNameProvider = TargetState{} + +// Name implements the HumanReadableNameProvider interface. +func (ts TargetState) Name(id catid.DescID) string { + if name := maybeNameFromTargets(ts, func(e Element) string { + switch e := e.(type) { + case *Namespace: + if e.DescriptorID == id { + return e.Name + } + case *FunctionName: + if e.FunctionID == id { + return e.Name + } + } + return "" + }); len(name) > 0 { + return name + } + return NameMappings(ts.NameMappings).Name(id) +} + +// IndexName implements the HumanReadableNameProvider interface. +func (ts TargetState) IndexName(relationID catid.DescID, indexID catid.IndexID) string { + if name := maybeNameFromTargets(ts, func(e Element) string { + switch e := e.(type) { + case *IndexName: + if e.TableID == relationID && e.IndexID == indexID { + return e.Name + } + } + return "" + }); len(name) > 0 { + return name + } + return NameMappings(ts.NameMappings).IndexName(relationID, indexID) +} + +// ColumnName implements the HumanReadableNameProvider interface. +func (ts TargetState) ColumnName(relationID catid.DescID, columnID catid.ColumnID) string { + if name := maybeNameFromTargets(ts, func(e Element) string { + switch e := e.(type) { + case *ColumnName: + if e.TableID == relationID && e.ColumnID == columnID { + return e.Name + } + } + return "" + }); len(name) > 0 { + return name + } + return NameMappings(ts.NameMappings).ColumnName(relationID, columnID) +} + +// FamilyName implements the HumanReadableNameProvider interface. +func (ts TargetState) FamilyName(relationID catid.DescID, familyID catid.FamilyID) string { + if name := maybeNameFromTargets(ts, func(e Element) string { + switch e := e.(type) { + case *ColumnFamily: + if e.TableID == relationID && e.FamilyID == familyID { + return e.Name + } + } + return "" + }); len(name) > 0 { + return name + } + return NameMappings(ts.NameMappings).FamilyName(relationID, familyID) +} + +// ConstraintName implements the HumanReadableNameProvider interface. +func (ts TargetState) ConstraintName( + relationID catid.DescID, constraintID catid.ConstraintID, +) string { + if name := maybeNameFromTargets(ts, func(e Element) string { + switch e := e.(type) { + case *ConstraintWithoutIndexName: + if e.TableID == relationID && e.ConstraintID == constraintID { + return e.Name + } + } + return "" + }); len(name) > 0 { + return name + } + return NameMappings(ts.NameMappings).ConstraintName(relationID, constraintID) +} + +func maybeNameFromTargets(ts TargetState, maybeNameFn func(e Element) string) string { + var added, transient, dropped string + for _, t := range ts.Targets { + if name := maybeNameFn(t.Element()); len(name) > 0 { + switch t.TargetStatus { + case Status_PUBLIC: + added = name + case Status_ABSENT: + dropped = name + default: + transient = name + } + } + } + var sb strings.Builder + if len(dropped) > 0 { + sb.WriteString(dropped) + sb.WriteRune('-') + } + if len(transient) > 0 { + sb.WriteString(transient) + sb.WriteRune('~') + } + if len(added) > 0 { + sb.WriteString(added) + sb.WriteRune('+') + } + return sb.String() +} + +// NameMappings implements the HumanReadableNameProvider interface. +// This data structure includes all of the names of things in each of +// the descriptors involved in the schema change, such as they were +// at build-time. +type NameMappings []NameMapping + +var _ sort.Interface = (*NameMappings)(nil) +var _ HumanReadableNameProvider = (*NameMappings)(nil) + +// Len implements the sort.Interface interface. +func (nms NameMappings) Len() int { + return len(nms) +} + +// Less implements the sort.Interface interface. +func (nms NameMappings) Less(i, j int) bool { + return nms[i].ID < nms[j].ID +} + +// Swap implements the sort.Interface interface. +func (nms NameMappings) Swap(i, j int) { + nms[i], nms[j] = nms[j], nms[i] +} + +// Name implements the HumanReadableNameProvider interface. +func (nms NameMappings) Name(id catid.DescID) string { + nm := nms.Find(id) + if nm == nil { + return fmt.Sprintf("#%d", id) + } + return nm.Name +} + +// IndexName implements the HumanReadableNameProvider interface. +func (nms NameMappings) IndexName(relationID catid.DescID, indexID catid.IndexID) string { + nm := nms.Find(relationID) + if nm == nil { + return fmt.Sprintf("[%d AS t]@[%d]", relationID, indexID) + } + if indexName, ok := nm.Indexes[indexID]; ok { + return indexName + } + return fmt.Sprintf("%s@[%d]", nm.Name, indexID) +} + +// ColumnName implements the HumanReadableNameProvider interface. +func (nms NameMappings) ColumnName(relationID catid.DescID, columnID catid.ColumnID) string { + nm := nms.Find(relationID) + if nm == nil { + return fmt.Sprintf("[%d AS t].[%d]", relationID, columnID) + } + if columnName, ok := nm.Columns[columnID]; ok { + return columnName + } + return fmt.Sprintf("%s.[%d]", nm.Name, columnID) +} + +// FamilyName implements the HumanReadableNameProvider interface. +func (nms NameMappings) FamilyName(relationID catid.DescID, familyID catid.FamilyID) string { + nm := nms.Find(relationID) + if nm == nil { + return fmt.Sprintf("[%d AS t].[family %d]", relationID, familyID) + } + if familyName, ok := nm.Families[familyID]; ok { + return familyName + } + return fmt.Sprintf("%s.[family %d]", nm.Name, familyID) +} + +// ConstraintName implements the HumanReadableNameProvider interface. +func (nms NameMappings) ConstraintName( + relationID catid.DescID, constraintID catid.ConstraintID, +) string { + nm := nms.Find(relationID) + if nm == nil { + return fmt.Sprintf("[%d AS t].[constraint %d]", relationID, constraintID) + } + if constraintName, ok := nm.Constraints[constraintID]; ok { + return constraintName + } + return fmt.Sprintf("%s.[constraint %d]", nm.Name, constraintID) +} + +// Find returns a pointer to the NameMapping for the given ID, nil otherwise. +func (nms NameMappings) Find(id catid.DescID) *NameMapping { + for i, nm := range nms { + if nm.ID < id { + continue + } + if nm.ID > id { + break + } + return &nms[i] + } + return nil +} diff --git a/pkg/sql/schemachanger/scpb/scpb.proto b/pkg/sql/schemachanger/scpb/scpb.proto index 2bbc5b3ad381..8b418c23dcd7 100644 --- a/pkg/sql/schemachanger/scpb/scpb.proto +++ b/pkg/sql/schemachanger/scpb/scpb.proto @@ -102,6 +102,7 @@ message TargetState { repeated Target targets = 1 [(gogoproto.nullable) = false]; repeated Statement statements = 2 [(gogoproto.nullable) = false]; Authorization authorization = 3 [(gogoproto.nullable) = false]; + repeated NameMapping name_mappings = 4 [(gogoproto.nullable) = false]; } message Statement { @@ -115,6 +116,18 @@ message Authorization { string app_name = 2; } +// NameMapping maps IDs to names for the purpose of generating +// human-readable output based on the TargetState or a plan. +message NameMapping { + uint32 id = 1 [(gogoproto.customname) = "ID", (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.DescID"]; + string name = 2; + + map columns = 10 [(gogoproto.castkey) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.ColumnID"]; + map families = 11 [(gogoproto.castkey) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.FamilyID"]; + map indexes = 12 [(gogoproto.castkey) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.IndexID"]; + map constraints = 13 [(gogoproto.castkey) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.ConstraintID"]; +} + // DescriptorState contains the portion of a schema change state // corresponding to an individual descriptor. The combination of // these messages for all descriptors involved in a schema change produces the @@ -172,6 +185,9 @@ message DescriptorState { // Authorization is information about the creator of the schema change. Authorization authorization = 3 [(gogoproto.nullable) = false]; + + // NameMapping contains labels used to decorate any of the targets. + NameMapping name_mapping = 9 [(gogoproto.nullable) = false]; } // CorpusState is used to serialize the current state object for the purpose, diff --git a/pkg/sql/schemachanger/scpb/state.go b/pkg/sql/schemachanger/scpb/state.go index bea47707bad4..57dbbad6019c 100644 --- a/pkg/sql/schemachanger/scpb/state.go +++ b/pkg/sql/schemachanger/scpb/state.go @@ -15,6 +15,7 @@ import ( "strings" "unsafe" + "github.com/cockroachdb/cockroach/pkg/sql/sem/catid" "github.com/cockroachdb/cockroach/pkg/util/protoutil" "github.com/cockroachdb/errors" ) @@ -208,7 +209,11 @@ func MakeCurrentStateFromDescriptors(descriptorStates []*DescriptorState) (Curre stmts[stmt.StatementRank] = stmt.Statement } s.Authorization = cs.Authorization + if cs.NameMapping.ID != catid.InvalidDescID { + s.NameMappings = append(s.NameMappings, *protoutil.Clone(&cs.NameMapping).(*NameMapping)) + } } + sort.Sort(NameMappings(s.NameMappings)) sort.Sort(&stateAndRanks{CurrentState: &s, ranks: targetRanks}) var sr stmtsAndRanks for rank, stmt := range stmts { diff --git a/pkg/sql/schemachanger/scplan/BUILD.bazel b/pkg/sql/schemachanger/scplan/BUILD.bazel index a219fee911dc..477d5a05d852 100644 --- a/pkg/sql/schemachanger/scplan/BUILD.bazel +++ b/pkg/sql/schemachanger/scplan/BUILD.bazel @@ -24,6 +24,7 @@ go_library( "//pkg/sql/schemachanger/scplan/internal/scgraphviz", "//pkg/sql/schemachanger/scplan/internal/scstage", "//pkg/sql/schemachanger/screl", + "//pkg/sql/sem/catid", "//pkg/util", "//pkg/util/log", "//pkg/util/mon", diff --git a/pkg/sql/schemachanger/scplan/internal/scstage/build.go b/pkg/sql/schemachanger/scplan/internal/scstage/build.go index c7f533d09070..477e9c9b48ac 100644 --- a/pkg/sql/schemachanger/scplan/internal/scstage/build.go +++ b/pkg/sql/schemachanger/scplan/internal/scstage/build.go @@ -823,12 +823,16 @@ func (bc buildContext) makeDescriptorStates(cur, next *Stage) map[descpb.ID]*scp // Initialize the descriptor states. ds := make(map[descpb.ID]*scpb.DescriptorState, bc.descIDs.Len()) bc.descIDs.ForEach(func(id descpb.ID) { - ds[id] = &scpb.DescriptorState{ + s := &scpb.DescriptorState{ Authorization: bc.targetState.Authorization, JobID: bc.scJobID(), InRollback: bc.rollback, Revertible: isRevertible(next), } + if nm := scpb.NameMappings(bc.targetState.NameMappings).Find(id); nm != nil { + s.NameMapping = *nm + } + ds[id] = s }) mkStmt := func(rank uint32) scpb.DescriptorState_Statement { return scpb.DescriptorState_Statement{ diff --git a/pkg/sql/schemachanger/scplan/plan_explain.go b/pkg/sql/schemachanger/scplan/plan_explain.go index a327e714b22a..8e7e027b5173 100644 --- a/pkg/sql/schemachanger/scplan/plan_explain.go +++ b/pkg/sql/schemachanger/scplan/plan_explain.go @@ -14,6 +14,7 @@ import ( gojson "encoding/json" "fmt" "reflect" + "sort" "strings" "unicode/utf8" @@ -23,9 +24,11 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scplan/internal/scgraphviz" "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scplan/internal/scstage" "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/screl" + "github.com/cockroachdb/cockroach/pkg/sql/sem/catid" "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/treeprinter" "github.com/cockroachdb/errors" + "github.com/cockroachdb/redact" "gopkg.in/yaml.v2" ) @@ -102,30 +105,8 @@ func (p Plan) ExplainVerbose() (string, error) { } func (p Plan) explain(style treeprinter.Style) (string, error) { - // Generate root node. tp := treeprinter.NewWithStyle(style) - var sb strings.Builder - { - // Don't bother to memory monitor this "prologue" part as it is small and fixed. - sb.WriteString("Schema change plan for ") - if p.InRollback { - sb.WriteString("rolling back ") - } - lastStmt := p.Statements[len(p.Statements)-1].RedactedStatement - sb.WriteString(strings.TrimSuffix(lastStmt, ";")) - if len(p.Statements) > 1 { - sb.WriteString("; following ") - for i, stmt := range p.Statements[:len(p.Statements)-1] { - if i > 0 { - sb.WriteString("; ") - } - sb.WriteString(strings.TrimSuffix(stmt.RedactedStatement, ";")) - } - } - sb.WriteString(";") - } - - root := tp.Child(sb.String()) + root := tp.Child(p.rootNodeLabel()) var pn treeprinter.Node for i, s := range p.Stages { // Generate stage node, grouped by phase. @@ -219,30 +200,31 @@ func (p Plan) explainTargets(s scstage.Stage, sn treeprinter.Node, style treepri } // Add element node and child rule nodes, and monitor memory allocation. var en treeprinter.Node - var str string var estimatedMemAlloc int + accountFor := func(label string) string { + estimatedMemAlloc += len(label) + return label + } + var sb redact.StringBuilder + if err := screl.FormatTargetElement(&sb, p.TargetState, t.Element()); err != nil { + return err + } if style == treeprinter.BulletStyle { - str = screl.ElementString(t.Element()) - en = tn.Child(str) - estimatedMemAlloc += len(str) - str = fmt.Sprintf("%s → %s", before, after) - en.AddLine(str) - estimatedMemAlloc += len(str) + en = tn.Child(accountFor(sb.String())) + en.AddLine(accountFor(fmt.Sprintf("%s → %s", before, after))) } else { - str = fmt.Sprintf(fmtCompactTransition, before, after, screl.ElementString(t.Element())) - en = tn.Child(str) - estimatedMemAlloc += len(str) + en = tn.Child(accountFor(fmt.Sprintf(fmtCompactTransition, before, after, sb.String()))) } depEdges := depEdgeByElement[t.Element()] for _, de := range depEdges { - str = fmt.Sprintf("%s dependency from %s %s", - de.Kind(), de.From().CurrentStatus, screl.ElementString(de.From().Element())) - rn := en.Child(str) - estimatedMemAlloc += len(str) + var sbf redact.StringBuilder + if err := screl.FormatTargetElement(&sbf, p.TargetState, de.From().Element()); err != nil { + return err + } + rn := en.Child(accountFor(fmt.Sprintf("%s dependency from %s %s", + de.Kind(), de.From().CurrentStatus, sbf))) for _, r := range de.Rules() { - str = fmt.Sprintf("rule: %q", r.Name) - rn.AddLine(str) - estimatedMemAlloc += len(str) + rn.AddLine(accountFor(fmt.Sprintf("rule: %q", r.Name))) } } noOpEdges := noOpByElement[t.Element()] @@ -251,14 +233,10 @@ func (p Plan) explainTargets(s scstage.Stage, sn treeprinter.Node, style treepri if len(noOpRules) == 0 { continue } - str = fmt.Sprintf("skip %s → %s operations", - oe.From().CurrentStatus, oe.To().CurrentStatus) - nn := en.Child(str) - estimatedMemAlloc += len(str) + nn := en.Child(accountFor(fmt.Sprintf("skip %s → %s operations", + oe.From().CurrentStatus, oe.To().CurrentStatus))) for _, rule := range noOpRules { - str = fmt.Sprintf("rule: %q", rule) - nn.AddLine(str) - estimatedMemAlloc += len(str) + nn.AddLine(accountFor(fmt.Sprintf("rule: %q", rule))) } } if err := p.Params.MemAcc.Grow(p.Params.Ctx, int64(estimatedMemAlloc)); err != nil { @@ -281,22 +259,24 @@ func (p Plan) explainOps(s scstage.Stage, sn treeprinter.Node, style treeprinter on := sn.Childf("%d %s operation%s", len(ops), strings.TrimSuffix(s.Type().String(), "Type"), plural) for _, op := range ops { var estimatedMemAlloc int + accountFor := func(label string) string { + estimatedMemAlloc += len(label) + return label + } if setJobStateOp, ok := op.(*scop.SetJobStateOnDescriptor); ok { clone := *setJobStateOp clone.State = scpb.DescriptorState{} op = &clone } - opName := strings.TrimPrefix(fmt.Sprintf("%T", op), "*scop.") + name := opName(op) if style == treeprinter.BulletStyle { - n := on.Child(opName) - estimatedMemAlloc += len(opName) + n := on.Child(accountFor(name)) opBody, err := explainOpBodyVerbose(op) if err != nil { return err } for _, line := range strings.Split(opBody, "\n") { - n.AddLine(line) - estimatedMemAlloc += len(line) + n.AddLine(accountFor(line)) } } else { opBody, err := explainOpBodyCompact(op) @@ -304,12 +284,9 @@ func (p Plan) explainOps(s scstage.Stage, sn treeprinter.Node, style treeprinter return err } if len(opBody) == 0 { - on.Child(opName) - estimatedMemAlloc += len(opName) + on.Child(accountFor(name)) } else { - str := fmt.Sprintf("%s %s", opName, opBody) - on.Child(str) - estimatedMemAlloc += len(str) + on.Child(accountFor(fmt.Sprintf("%s %s", name, opBody))) } } if err := p.Params.MemAcc.Grow(p.Params.Ctx, int64(estimatedMemAlloc)); err != nil { @@ -394,3 +371,265 @@ func opMapTrim(in map[string]interface{}) map[string]interface{} { } return out } + +// ExplainShape returns a human-readable plan rendering for +// EXPLAIN (DDL, SHAPE) statements. +// It gives a condensed summary of the operations involved in the schema change +// with highlights on potentially expensive operations like backfilling indexes +// and validating constraints. This helps users get a sense of the performance +// impact of executing the schema change. +func (p Plan) ExplainShape() (string, error) { + // Generate root node. + tp := treeprinter.NewWithStyle(treeprinter.DefaultStyle) + root := tp.Child(p.rootNodeLabel()) + var txnCounter uint + for i, s := range p.Stages { + switch s.Type() { + case scop.MutationType: + // Group these into consecutive transactions. + // Each transaction is assumed to have a fixed cost, which is true + // enough in comparison to non-mutation stages whose ops cost O(rows). + var nextStage *Stage + if i < len(p.Stages)-1 { + nextStage = &p.Stages[i+1] + } + if nextStage != nil && nextStage.Phase <= scop.PreCommitPhase { + // Ignore all stages prior to the last pre-commit stage + // when it comes to counting transactions. + continue + } + txnCounter++ + if nextStage == nil || nextStage.Type() != scop.MutationType { + // This stage is the last consecutive mutation stage. + if txnCounter == 1 { + root.Childf("execute 1 system table mutations transaction") + } else { + root.Childf("execute %d system table mutations transactions", txnCounter) + } + txnCounter = 0 + } + case scop.BackfillType: + if err := p.explainBackfillsAndMerges(root, s.EdgeOps); err != nil { + return "", err + } + case scop.ValidationType: + if err := p.explainValidations(root, s.EdgeOps); err != nil { + return "", err + } + default: + return "", errors.AssertionFailedf("unsupported type %s", s.Type()) + } + } + return tp.String(), nil +} + +func (p Plan) rootNodeLabel() string { + var sb strings.Builder + // Don't bother to memory monitor this "prologue" part as it is small and fixed. + sb.WriteString("Schema change plan for ") + if p.InRollback { + sb.WriteString("rolling back ") + } + lastStmt := p.Statements[len(p.Statements)-1].RedactedStatement + sb.WriteString(strings.TrimSuffix(lastStmt, ";")) + if len(p.Statements) > 1 { + sb.WriteString("; following ") + for i, stmt := range p.Statements[:len(p.Statements)-1] { + if i > 0 { + sb.WriteString("; ") + } + sb.WriteString(strings.TrimSuffix(stmt.RedactedStatement, ";")) + } + } + sb.WriteString(";") + return sb.String() +} + +func (p Plan) explainBackfillsAndMerges(root treeprinter.Node, ops []scop.Op) error { + gbs, gms := groupBackfillsAndMerges(ops) + var estimatedMemAlloc int + accountFor := func(label string) string { + estimatedMemAlloc += len(label) + return label + } + for _, gb := range gbs { + bn := root.Child(accountFor(fmt.Sprintf( + "backfill using primary index %s in relation %s", + p.IndexName(gb.relationID, gb.srcIndexID), + p.Name(gb.relationID), + ))) + var key, suffix, stored []*scpb.IndexColumn + for _, t := range p.Targets { + switch e := t.Element().(type) { + case *scpb.IndexColumn: + if e.TableID == gb.relationID { + switch e.Kind { + case scpb.IndexColumn_KEY: + key = append(key, e) + case scpb.IndexColumn_KEY_SUFFIX: + suffix = append(suffix, e) + case scpb.IndexColumn_STORED: + stored = append(stored, e) + } + } + } + } + for _, ics := range [][]*scpb.IndexColumn{key, suffix, stored} { + sort.Slice(ics, func(i, j int) bool { + if ics[i].IndexID == ics[j].IndexID { + return ics[i].OrdinalInKind == ics[j].OrdinalInKind + } + return ics[i].IndexID < ics[j].IndexID + }) + } + for _, id := range gb.dstIndexIDs.Ordered() { + var withComma bool + var sb strings.Builder + sb.WriteString("into ") + sb.WriteString(p.IndexName(gb.relationID, id)) + sb.WriteString(" (") + for _, ics := range [][]*scpb.IndexColumn{key, suffix, stored} { + for _, ic := range ics { + if ic.IndexID == id { + if withComma { + sb.WriteString(", ") + } else { + withComma = true + } + sb.WriteString(p.ColumnName(gb.relationID, ic.ColumnID)) + } + } + } + sb.WriteString(")") + bn.Child(accountFor(sb.String())) + } + } + for _, gm := range gms { + mn := root.Child(accountFor(fmt.Sprintf( + "merge temporary indexes into backfilled indexes in relation %s", + p.Name(gm.relationID), + ))) + for _, mp := range gm.pairs { + mn.Child(accountFor(fmt.Sprintf( + "from %s into %s", + p.IndexName(gm.relationID, mp.srcIndexID), + p.IndexName(gm.relationID, mp.dstIndexID), + ))) + } + } + return p.Params.MemAcc.Grow(p.Params.Ctx, int64(estimatedMemAlloc)) +} + +func (p Plan) explainValidations(root treeprinter.Node, ops []scop.Op) error { + var estimatedMemAlloc int + accountFor := func(label string) string { + estimatedMemAlloc += len(label) + return label + } + for _, op := range ops { + switch op := op.(type) { + case *scop.ValidateIndex: + root.Child(accountFor(fmt.Sprintf( + "validate UNIQUE constraint backed by index %s in relation %s", + p.IndexName(op.TableID, op.IndexID), + p.Name(op.TableID), + ))) + case *scop.ValidateConstraint: + root.Child(accountFor(fmt.Sprintf( + "validate non-index-backed constraint %s in relation %s", + p.ConstraintName(op.TableID, op.ConstraintID), + p.Name(op.TableID), + ))) + case *scop.ValidateColumnNotNull: + root.Child(accountFor(fmt.Sprintf( + "validate NOT NULL constraint on column %s in index %s in relation %s", + p.ColumnName(op.TableID, op.ColumnID), + p.IndexName(op.TableID, op.IndexIDForValidation), + p.Name(op.TableID), + ))) + } + } + return p.Params.MemAcc.Grow(p.Params.Ctx, int64(estimatedMemAlloc)) +} + +func groupBackfillsAndMerges(ops []scop.Op) ([]groupedBackfill, []groupedMerge) { + gbs := make([]groupedBackfill, 0, len(ops)) + gms := make([]groupedMerge, 0, len(ops)) + gbIdx := make(map[groupedBackfillKey]int) + gmIdx := make(map[groupedMergeKey]int) + for _, op := range ops { + switch op := op.(type) { + case *scop.BackfillIndex: + k := groupedBackfillKey{ + relationID: op.TableID, + srcIndexID: op.SourceIndexID, + } + if idx, ok := gbIdx[k]; ok { + gbs[idx].dstIndexIDs.Add(op.IndexID) + } else { + gbIdx[k] = len(gbs) + gbs = append(gbs, groupedBackfill{ + groupedBackfillKey: k, + dstIndexIDs: catid.MakeIndexIDSet(op.IndexID), + }) + } + case *scop.MergeIndex: + k := groupedMergeKey{relationID: op.TableID} + mp := mergePair{ + srcIndexID: op.TemporaryIndexID, + dstIndexID: op.BackfilledIndexID, + } + if idx, ok := gmIdx[k]; ok { + gms[idx].pairs = append(gms[idx].pairs, mp) + } else { + gmIdx[k] = len(gms) + gms = append(gms, groupedMerge{ + groupedMergeKey: k, + pairs: []mergePair{mp}, + }) + } + } + } + sort.Slice(gbs, func(i, j int) bool { + if gbs[i].relationID == gbs[j].relationID { + return gbs[i].srcIndexID < gbs[j].srcIndexID + } + return gbs[i].relationID < gbs[j].relationID + }) + sort.Slice(gms, func(i, j int) bool { + return gms[i].relationID < gms[j].relationID + }) + for _, gm := range gms { + sort.Slice(gm.pairs, func(i, j int) bool { + return gm.pairs[i].srcIndexID < gm.pairs[j].dstIndexID + }) + } + return gbs, gms +} + +type groupedBackfill struct { + groupedBackfillKey + dstIndexIDs catid.IndexSet +} + +type groupedBackfillKey struct { + relationID catid.DescID + srcIndexID catid.IndexID +} + +type groupedMerge struct { + groupedMergeKey + pairs []mergePair +} + +type groupedMergeKey struct { + relationID catid.DescID +} + +type mergePair struct { + srcIndexID, dstIndexID catid.IndexID +} + +func opName(op scop.Op) string { + return strings.TrimPrefix(fmt.Sprintf("%T", op), "*scop.") +} diff --git a/pkg/sql/schemachanger/scplan/plan_test.go b/pkg/sql/schemachanger/scplan/plan_test.go index 298b8137c006..885860101f2a 100644 --- a/pkg/sql/schemachanger/scplan/plan_test.go +++ b/pkg/sql/schemachanger/scplan/plan_test.go @@ -288,4 +288,7 @@ func TestExplainPlanIsMemoryMonitored(t *testing.T) { _, err = plan.ExplainVerbose() require.Regexp(t, `test-sc-plan-mon: memory budget exceeded: .*`, err.Error()) memAcc.Clear(ctx) + + // SHAPE plans don't depend on the number of elements and won't + // exceed the memory budget, so we don't test them for errors. } diff --git a/pkg/sql/schemachanger/screl/format.go b/pkg/sql/schemachanger/screl/format.go index 181f0d6f8712..5508a600705e 100644 --- a/pkg/sql/schemachanger/screl/format.go +++ b/pkg/sql/schemachanger/screl/format.go @@ -13,6 +13,7 @@ package screl import ( "fmt" "reflect" + "strings" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/rel" @@ -87,3 +88,108 @@ func FormatElement(w redact.SafeWriter, e scpb.Element) (err error) { w.SafeRune('}') return nil } + +// FormatTargetElement formats the target element into the SafeWriter. +// This differs from FormatElement in that an attempt is made to decorate +// the IDs with names. +func FormatTargetElement(w redact.SafeWriter, ts scpb.TargetState, e scpb.Element) (err error) { + w.SafeString(redact.SafeString(reflect.TypeOf(e).Elem().Name())) + w.SafeString(":{") + maybePrintName := func(name string) { + if !strings.HasSuffix(name, "]") { + w.UnsafeString(" (") + w.UnsafeString(name) + w.UnsafeString(")") + } + } + var written int + descID := GetDescID(e) + if err := Schema.IterateAttributes(e, func(attr rel.Attr, value interface{}) error { + switch attr { + case ReferencedDescID: + if value == descpb.ID(0) { + return nil + } + case TemporaryIndexID, SourceIndexID: + if value == descpb.IndexID(0) { + return nil + } + case ColumnID: + if value == descpb.ColumnID(0) { + return nil + } + case ConstraintID: + if value == descpb.ConstraintID(0) { + return nil + } + } + if written > 0 { + w.SafeString(", ") + } + written++ + w.SafeString(redact.SafeString(attr.String())) + w.SafeString(": ") + switch attr { + case DescID, ReferencedDescID: + id, ok := value.(descpb.ID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.SafeUint(redact.SafeUint(id)) + maybePrintName(ts.Name(id)) + case ReferencedTypeIDs, ReferencedSequenceIDs, ReferencedFunctionIDs: + ids, ok := value.([]descpb.ID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.SafeString("[") + for i, id := range ids { + if i > 0 { + w.SafeString(", ") + } + w.Printf("%d", id) + maybePrintName(ts.Name(id)) + } + w.SafeString("]") + case IndexID, TemporaryIndexID, SourceIndexID: + indexID, ok := value.(descpb.IndexID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.Printf("%d", indexID) + maybePrintName(ts.IndexName(descID, indexID)) + case ColumnFamilyID: + familyID, ok := value.(descpb.FamilyID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.Printf("%d", familyID) + maybePrintName(ts.FamilyName(descID, familyID)) + case ColumnID: + columnID, ok := value.(descpb.ColumnID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.Printf("%d", columnID) + maybePrintName(ts.ColumnName(descID, columnID)) + case ConstraintID: + constraintID, ok := value.(descpb.ConstraintID) + if !ok { + return errors.AssertionFailedf("unexpected type %T for %s value in %T", value, attr, e) + } + w.Printf("%d", constraintID) + maybePrintName(ts.ConstraintName(descID, constraintID)) + default: + if str, isStr := value.(string); isStr { + w.Printf("%q", str) + } else { + w.Printf("%v", value) + } + } + return nil + }); err != nil { + return err + } + w.SafeRune('}') + return nil +} diff --git a/pkg/sql/schemachanger/sctest/end_to_end.go b/pkg/sql/schemachanger/sctest/end_to_end.go index e45b984329bc..7557e92e3471 100644 --- a/pkg/sql/schemachanger/sctest/end_to_end.go +++ b/pkg/sql/schemachanger/sctest/end_to_end.go @@ -270,6 +270,7 @@ func EndToEndSideEffects(t *testing.T, relPath string, newCluster NewClusterFunc const ( explainDirName = "explain" explainVerboseDirName = "explain_verbose" + explainShapeDirName = "explain_shape" ) // checkExplainDiagrams checks the output of the compact and verbose explain @@ -292,6 +293,7 @@ func checkExplainDiagrams( } explainDir := mkdir(explainDirName) explainVerboseDir := mkdir(explainVerboseDirName) + explainShapeDir := mkdir(explainShapeDirName) baseName := filepath.Base(path) makeFile := func(dir string, openFunc func(string) (*os.File, error)) *os.File { name := baseName + fileNameSuffix @@ -350,6 +352,9 @@ func checkExplainDiagrams( require.NoErrorf(t, err, "%s: %s", fileNameSuffix, explainedStmt) action(explainDir, "ddl", pl.ExplainCompact) action(explainVerboseDir, "ddl, verbose", pl.ExplainVerbose) + if !inRollback { + action(explainShapeDir, "ddl, shape", pl.ExplainShape) + } } // scheduleIDRegexp captures either `scheduleId: 384784` or `scheduleId: "374764"`. diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column b/pkg/sql/schemachanger/testdata/end_to_end/add_column index 5f01b2a1d567..1063680e7c38 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column @@ -181,6 +181,19 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": k + + "3": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "2": tbl_pkey + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT @@ -637,6 +650,19 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": k + - "3": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "2": tbl_pkey + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_seq b/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_seq index 66c48d9fbd42..db297caaaa4b 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_seq +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_seq @@ -191,6 +191,18 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": l + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "2": tbl_pkey + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹l› INT8 NOT @@ -303,6 +315,9 @@ upsert descriptor #107 + authorization: + userName: root + jobId: "1" + + nameMapping: + + id: 107 + + name: sq1 + revertible: true + dependedOnBy: + - byId: true @@ -624,8 +639,8 @@ upsert descriptor #106 + version: "7" upsert descriptor #107 ... - userName: root - jobId: "1" + id: 107 + name: sq1 - revertible: true dependedOnBy: - byId: true @@ -706,6 +721,18 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": l + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "2": tbl_pkey + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹l› INT8 NOT @@ -758,6 +785,9 @@ upsert descriptor #107 - authorization: - userName: root - jobId: "1" + - nameMapping: + - id: 107 + - name: sq1 dependedOnBy: - byId: true ... diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_unique b/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_unique index aecda174f71f..96e308d84298 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_unique +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_default_unique @@ -210,6 +210,19 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "2": tbl_pkey + + "4": tbl_j_key + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 UNIQUE @@ -778,6 +791,19 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "2": tbl_pkey + - "4": tbl_j_key + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 UNIQUE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_no_default b/pkg/sql/schemachanger/testdata/end_to_end/add_column_no_default index f1e1f8a29e11..1ee921cc014f 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_no_default +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_no_default @@ -109,6 +109,18 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "1": tbl_pkey + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 @@ -214,6 +226,18 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "1": tbl_pkey + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored b/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored index c6808bda00a2..1af3d7ae4c91 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored @@ -195,6 +195,19 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": k + + "3": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "2": tbl_pkey + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT @@ -651,6 +664,19 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": k + - "3": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "2": tbl_pkey + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored_family b/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored_family index 006b572e826f..e6dd09029ff0 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored_family +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_with_stored_family @@ -196,6 +196,20 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": k + + "3": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + "1": bob + + id: 106 + + indexes: + + "2": tbl_pkey + + name: tbl + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT @@ -655,6 +669,20 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": k + - "3": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - "1": bob + - id: 106 + - indexes: + - "2": tbl_pkey + - name: tbl - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_udf b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_udf index 40107ff7c6d4..f3dc64527fcd 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_udf +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_udf @@ -102,6 +102,20 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": b + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": check_b + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹check_b› @@ -148,6 +162,7 @@ upsert descriptor #105 + authorization: + userName: root + jobId: "1" + + nameMapping: {} + revertible: true + dependedOnBy: + - constraintIds: @@ -191,6 +206,20 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": b + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": check_b + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹check_b› @@ -233,6 +262,7 @@ upsert descriptor #105 - authorization: - userName: root - jobId: "1" + - nameMapping: {} - revertible: true dependedOnBy: - constraintIds: diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_vanilla b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_vanilla index 2aaf66a1e904..b9905c9b8762 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_vanilla +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_vanilla @@ -116,6 +116,19 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": check_i + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK (‹i› > ‹0›) @@ -185,6 +198,19 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": check_i + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK (‹i› > ‹0›) diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_with_seq_and_udt b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_with_seq_and_udt index baf9ef8e3a79..4925047b72bd 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_with_seq_and_udt +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_check_with_seq_and_udt @@ -113,6 +113,9 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: + + id: 104 + + name: s + revertible: true + dependedOnBy: + - byId: true @@ -131,6 +134,9 @@ upsert descriptor #105 + authorization: + userName: root + jobId: "1" + + nameMapping: + + id: 105 + + name: typ + revertible: true enumMembers: - logicalRepresentation: a @@ -149,6 +155,7 @@ upsert descriptor #106 + authorization: + userName: root + jobId: "1" + + nameMapping: {} + revertible: true id: 106 kind: ALIAS @@ -179,6 +186,20 @@ upsert descriptor #107 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": check_i_j + + families: + + "0": primary + + id: 107 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK ((‹i› > @@ -243,6 +264,9 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: + - id: 104 + - name: s - revertible: true dependedOnBy: - byId: true @@ -258,6 +282,9 @@ upsert descriptor #105 - authorization: - userName: root - jobId: "1" + - nameMapping: + - id: 105 + - name: typ - revertible: true enumMembers: - logicalRepresentation: a @@ -274,6 +301,7 @@ upsert descriptor #106 - authorization: - userName: root - jobId: "1" + - nameMapping: {} - revertible: true id: 106 kind: ALIAS @@ -297,6 +325,20 @@ upsert descriptor #107 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": check_i_j + - families: + - "0": primary + - id: 107 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK ((‹i› > diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_foreign_key b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_foreign_key index cb99074cda27..810f6772609a 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_foreign_key +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_foreign_key @@ -132,6 +132,19 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": t1_i_fkey + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t1_pkey + + name: t1 + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t1› ADD CONSTRAINT ‹t1_i_fkey› @@ -184,6 +197,17 @@ upsert descriptor #105 + authorization: + userName: root + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 105 + + indexes: + + "1": t2_pkey + + name: t2 + revertible: true families: - columnIds: @@ -231,6 +255,19 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": t1_i_fkey + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t1_pkey + - name: t1 - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t1› ADD CONSTRAINT ‹t1_i_fkey› @@ -293,6 +330,17 @@ upsert descriptor #105 - authorization: - userName: root - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 105 + - indexes: + - "1": t2_pkey + - name: t2 - revertible: true families: - columnIds: diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_primary_key_drop_rowid index dd41fdc8bff3..8174f0fa6345 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_primary_key_drop_rowid @@ -242,6 +242,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": a + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "4": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIMARY KEY (‹a›) @@ -964,6 +975,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": a + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "4": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIMARY KEY (‹a›) diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_unique_without_index b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_unique_without_index index 8a3da2bf06fa..64deb8400e07 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_unique_without_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_add_unique_without_index @@ -98,6 +98,20 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": unique_j + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹unique_j› @@ -163,6 +177,20 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": unique_j + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹unique_j› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_column_set_not_null b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_column_set_not_null index 61afcb7d7ee8..29400668c591 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_column_set_not_null +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_column_set_not_null @@ -96,6 +96,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER COLUMN ‹j› SET @@ -175,6 +187,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER COLUMN ‹j› SET diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_drop_rowid index 250930e598a8..1ca1cdbaf789 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_drop_rowid @@ -245,6 +245,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": a + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "4": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY @@ -968,6 +979,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": a + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "4": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_using_hash b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_using_hash index de1a1726a7de..314e19e5e911 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_using_hash +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_using_hash @@ -223,6 +223,22 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "3": crdb_internal_j_shard_3 + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "2": check_crdb_internal_j_shard_3 + + families: + + "0": primary + + id: 104 + + indexes: + + "2": t_pkey + + "4": t_i_key + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY @@ -919,6 +935,22 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "3": crdb_internal_j_shard_3 + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "2": check_crdb_internal_j_shard_3 + - families: + - "0": primary + - id: 104 + - indexes: + - "2": t_pkey + - "4": t_i_key + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_vanilla b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_vanilla index 0362c9837c29..220099552530 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_vanilla +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_alter_primary_key_vanilla @@ -199,6 +199,19 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "2": t_pkey + + "4": t_i_key + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY @@ -712,6 +725,19 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "2": t_pkey + - "4": t_i_key + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_check b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_check index 7df6e7e990f3..5c8479917b82 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_check +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_check @@ -81,6 +81,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹check_i› @@ -146,6 +157,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹check_i› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_fk b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_fk index c5929edc2df4..409b224f6d1b 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_fk +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_fk @@ -130,6 +130,7 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: {} families: - columnIds: ... @@ -159,6 +160,17 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 105 + + indexes: + + "1": t1_pkey + + name: t1 + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t1› DROP CONSTRAINT ‹t1_i_fkey› @@ -230,6 +242,7 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: {} families: - columnIds: ... @@ -261,6 +274,17 @@ upsert descriptor #105 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 105 + - indexes: + - "1": t1_pkey + - name: t1 - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t1› DROP CONSTRAINT ‹t1_i_fkey› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_uwi b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_uwi index f5ab34ac633b..2597a3b4328c 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_uwi +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_drop_constraint_uwi @@ -77,6 +77,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹unique_j› @@ -138,6 +150,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹unique_j› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_validate_constraint b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_validate_constraint index f466a47af52e..e46e48aacbd4 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/alter_table_validate_constraint +++ b/pkg/sql/schemachanger/testdata/end_to_end/alter_table_validate_constraint @@ -81,6 +81,19 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "3": check_i + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE CONSTRAINT @@ -151,6 +164,19 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "3": check_i + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE CONSTRAINT diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_function_in_txn b/pkg/sql/schemachanger/testdata/end_to_end/create_function_in_txn index 9c4f774aa508..b649f9c8c91e 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_function_in_txn +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_function_in_txn @@ -162,6 +162,9 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 105 + + name: t + relevantStatements: + - statement: + redactedStatement: "CREATE FUNCTION ‹defaultdb›.‹public›.‹t›()\n\tRETURNS @@ -226,6 +229,19 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": a + + "2": b + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + "2": idx + + name: t + relevantStatements: + - statement: + redactedStatement: CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹public›.‹t› (‹b›) @@ -534,6 +550,19 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": a + - "2": b + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - "2": idx + - name: t - relevantStatements: - - statement: - redactedStatement: CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹public›.‹t› (‹b›) @@ -588,6 +617,9 @@ upsert descriptor #105 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 105 + - name: t - relevantStatements: - - statement: - redactedStatement: "CREATE FUNCTION ‹defaultdb›.‹public›.‹t›()\n\tRETURNS diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_index b/pkg/sql/schemachanger/testdata/end_to_end/create_index index f0f7d37bf805..99d36b23ae96 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_index @@ -149,6 +149,9 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: + + id: 104 + + name: e + revertible: true enumMembers: - logicalRepresentation: a @@ -165,6 +168,7 @@ upsert descriptor #105 + authorization: + userName: root + jobId: "1" + + nameMapping: {} + revertible: true id: 105 kind: ALIAS @@ -182,6 +186,19 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": k + + "2": v + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 106 + + indexes: + + "1": t_pkey + + "2": idx1 + + name: t + relevantStatements: + - statement: + redactedStatement: CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›.‹t› (‹v›) WHERE @@ -403,8 +420,8 @@ begin transaction #10 ## PostCommitNonRevertiblePhase stage 1 of 2 with 9 MutationType ops upsert descriptor #104 ... - userName: root - jobId: "1" + id: 104 + name: e - revertible: true enumMembers: - logicalRepresentation: a @@ -415,8 +432,8 @@ upsert descriptor #104 + version: "8" upsert descriptor #105 ... - userName: root jobId: "1" + nameMapping: {} - revertible: true id: 105 kind: ALIAS @@ -513,6 +530,9 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: + - id: 104 + - name: e enumMembers: - logicalRepresentation: a ... @@ -528,6 +548,7 @@ upsert descriptor #105 - authorization: - userName: root - jobId: "1" + - nameMapping: {} id: 105 kind: ALIAS ... @@ -544,6 +565,19 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": k + - "2": v + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 106 + - indexes: + - "1": t_pkey + - "2": idx1 + - name: t - relevantStatements: - - statement: - redactedStatement: CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›.‹t› (‹v›) WHERE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_basic b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_basic index d69a23187a51..e8a4ff40deeb 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_basic +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_basic @@ -199,6 +199,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "3": k + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "2": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› @@ -565,6 +577,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "3": k + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "2": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_computed_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_computed_index index 280546b4ed21..47f1f120ab16 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_computed_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_computed_index @@ -247,6 +247,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "3": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE @@ -713,6 +724,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "3": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_create_index_separate_statements b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_create_index_separate_statements index 1a03352071fe..3a646d0d4171 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_create_index_separate_statements +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_create_index_separate_statements @@ -281,6 +281,22 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": crdb_internal_column_2_name_placeholder + + "3": k + + "4": crdb_internal_column_4_name_placeholder + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "3": t_pkey + + "4": crdb_internal_index_4_name_placeholder + + "5": idx + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE @@ -942,6 +958,22 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": crdb_internal_column_2_name_placeholder + - "3": k + - "4": crdb_internal_column_4_name_placeholder + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "3": t_pkey + - "4": crdb_internal_index_4_name_placeholder + - "5": idx + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_unique_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_unique_index index 8fe63b45308a..03b1a674d6b4 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_unique_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_unique_index @@ -166,6 +166,22 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": k + + "2": v + + "4": x + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + constraints: + + "6": check_x + + families: + + "0": primary + + id: 106 + + indexes: + + "2": vidx + + "6": test_pkey + + name: test + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ‹pi› @@ -538,6 +554,22 @@ upsert descriptor #106 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": k + - "2": v + - "4": x + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - constraints: + - "6": check_x + - families: + - "0": primary + - id: 106 + - indexes: + - "2": vidx + - "6": test_pkey + - name: test - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ‹pi› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_index index 4999fc45a163..614245ff9941 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_index @@ -214,6 +214,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "3": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› @@ -661,6 +672,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "3": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_partial_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_partial_index index d2c03c414bf8..6ff68928880d 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_partial_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_partial_index @@ -219,6 +219,17 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "3": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› @@ -669,6 +680,17 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "3": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_udf_default b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_udf_default index 4150193387aa..87933ed5e917 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_udf_default +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_column_with_udf_default @@ -143,6 +143,7 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: {} + revertible: true dependedOnBy: - columnIds: @@ -173,6 +174,17 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 105 + + indexes: + + "2": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹b› @@ -401,8 +413,8 @@ begin transaction #10 ## PostCommitNonRevertiblePhase stage 1 of 3 with 10 MutationType ops upsert descriptor #104 ... - userName: root jobId: "1" + nameMapping: {} - revertible: true dependedOnBy: - columnIds: @@ -576,6 +588,7 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: {} - dependedOnBy: - - columnIds: - - 2 @@ -597,6 +610,17 @@ upsert descriptor #105 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 105 + - indexes: + - "2": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹b› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_function b/pkg/sql/schemachanger/testdata/end_to_end/drop_function index 436fe5294854..cea00309a2f9 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_function +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_function @@ -175,6 +175,7 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: {} dependedOnBy: - columnIds: - 1 @@ -208,6 +209,7 @@ upsert descriptor #105 + authorization: + userName: root + jobId: "1" + + nameMapping: {} families: - columnIds: ... @@ -227,6 +229,7 @@ upsert descriptor #106 + authorization: + userName: root + jobId: "1" + + nameMapping: {} dependsOn: - 104 ... @@ -242,6 +245,7 @@ upsert descriptor #107 + authorization: + userName: root + jobId: "1" + + nameMapping: {} enumMembers: - logicalRepresentation: Monday ... @@ -259,6 +263,7 @@ upsert descriptor #108 + authorization: + userName: root + jobId: "1" + + nameMapping: {} id: 108 kind: ALIAS ... @@ -275,6 +280,9 @@ upsert descriptor #109 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 109 + + name: f + relevantStatements: + - statement: + redactedStatement: DROP FUNCTION ‹""›.‹""›.‹f› @@ -310,6 +318,7 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: {} dependedOnBy: - columnIds: ... @@ -325,6 +334,7 @@ upsert descriptor #105 - authorization: - userName: root - jobId: "1" + - nameMapping: {} families: - columnIds: ... @@ -340,6 +350,7 @@ upsert descriptor #106 - authorization: - userName: root - jobId: "1" + - nameMapping: {} dependsOn: - 104 ... @@ -355,6 +366,7 @@ upsert descriptor #107 - authorization: - userName: root - jobId: "1" + - nameMapping: {} enumMembers: - logicalRepresentation: Monday ... @@ -370,6 +382,7 @@ upsert descriptor #108 - authorization: - userName: root - jobId: "1" + - nameMapping: {} id: 108 kind: ALIAS ... diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_hash_sharded_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_hash_sharded_index index cf1f5e9fc0b0..44e865127f30 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_hash_sharded_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_hash_sharded_index @@ -231,6 +231,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE @@ -464,6 +476,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_partial_expression_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_partial_expression_index index 08532f121ad0..24527181a046 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_partial_expression_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_partial_expression_index @@ -137,6 +137,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE @@ -267,6 +279,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_vanilla_index b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_vanilla_index index ce050232211e..786fcde77acf 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_vanilla_index +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_vanilla_index @@ -110,6 +110,18 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "1": t_pkey + + name: t + relevantStatements: + - statement: + redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE @@ -217,6 +229,18 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "1": t_pkey + - name: t - relevantStatements: - - statement: - redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_with_materialized_view_dep b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_with_materialized_view_dep index d0a3ec495dde..18bcf6f9797c 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_index_with_materialized_view_dep +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_index_with_materialized_view_dep @@ -144,6 +144,19 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": j + + "3": rowid + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 105 + + indexes: + + "1": v2_pkey + + name: v2 + relevantStatements: + - statement: + redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx› CASCADE @@ -218,6 +231,9 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 106 + + name: v3 + relevantStatements: + - statement: + redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx› CASCADE @@ -285,6 +301,19 @@ upsert descriptor #105 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": j + - "3": rowid + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 105 + - indexes: + - "1": v2_pkey + - name: v2 - relevantStatements: - - statement: - redactedStatement: DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_multiple_columns_separate_statements b/pkg/sql/schemachanger/testdata/end_to_end/drop_multiple_columns_separate_statements index 52271cd5e9ef..5c898991d25b 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_multiple_columns_separate_statements +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_multiple_columns_separate_statements @@ -378,6 +378,20 @@ upsert descriptor #104 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + columns: + + "1": i + + "2": crdb_internal_column_2_name_placeholder + + "4": crdb_internal_column_4_name_placeholder + + "4294967294": tableoid + + "4294967295": crdb_internal_mvcc_timestamp + + families: + + "0": primary + + id: 104 + + indexes: + + "3": t_pkey + + "4": crdb_internal_index_4_name_placeholder + + name: t + relevantStatements: + - statement: + redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE @@ -890,6 +904,20 @@ upsert descriptor #104 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - columns: + - "1": i + - "2": crdb_internal_column_2_name_placeholder + - "4": crdb_internal_column_4_name_placeholder + - "4294967294": tableoid + - "4294967295": crdb_internal_mvcc_timestamp + - families: + - "0": primary + - id: 104 + - indexes: + - "3": t_pkey + - "4": crdb_internal_index_4_name_placeholder + - name: t - relevantStatements: - - statement: - redactedStatement: ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_schema b/pkg/sql/schemachanger/testdata/end_to_end/drop_schema index 147f6352a2fe..5a395baacc99 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_schema +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_schema @@ -53,6 +53,9 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: + + id: 104 + + name: db defaultPrivileges: {} id: 104 ... @@ -69,6 +72,9 @@ upsert descriptor #106 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 106 + + name: sc + relevantStatements: + - statement: + redactedStatement: DROP SCHEMA ‹db›.‹sc› @@ -101,6 +107,9 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: + - id: 104 + - name: db defaultPrivileges: {} id: 104 ... diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_table b/pkg/sql/schemachanger/testdata/end_to_end/drop_table index 11a1c97c29c6..eb6e375634e0 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_table +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_table @@ -60,6 +60,9 @@ upsert descriptor #107 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 107 + + name: t + relevantStatements: + - statement: + redactedStatement: DROP TABLE ‹db›.‹sc›.‹t› @@ -98,6 +101,9 @@ upsert descriptor #107 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 107 + - name: t - relevantStatements: - - statement: - redactedStatement: DROP TABLE ‹db›.‹sc›.‹t› diff --git a/pkg/sql/schemachanger/testdata/end_to_end/drop_table_udf_default b/pkg/sql/schemachanger/testdata/end_to_end/drop_table_udf_default index 02222849aff8..2329f6b38239 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/drop_table_udf_default +++ b/pkg/sql/schemachanger/testdata/end_to_end/drop_table_udf_default @@ -66,6 +66,7 @@ upsert descriptor #104 + authorization: + userName: root + jobId: "1" + + nameMapping: {} functionBody: SELECT 1; id: 104 ... @@ -83,6 +84,9 @@ upsert descriptor #105 + userName: root + currentStatuses: + jobId: "1" + + nameMapping: + + id: 105 + + name: t + relevantStatements: + - statement: + redactedStatement: DROP TABLE ‹defaultdb›.‹public›.‹t› @@ -117,6 +121,7 @@ upsert descriptor #104 - authorization: - userName: root - jobId: "1" + - nameMapping: {} functionBody: SELECT 1; id: 104 ... @@ -134,6 +139,9 @@ upsert descriptor #105 - userName: root - currentStatuses: - jobId: "1" + - nameMapping: + - id: 105 + - name: t - relevantStatements: - - statement: - redactedStatement: DROP TABLE ‹defaultdb›.‹public›.‹t› diff --git a/pkg/sql/schemachanger/testdata/explain/add_column b/pkg/sql/schemachanger/testdata/explain/add_column index 1f89cdc015e8..5a66988ac1db 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column +++ b/pkg/sql/schemachanger/testdata/explain/add_column @@ -13,20 +13,20 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 9 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 12 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── SetColumnName {"ColumnID":3,"Name":"j","TableID":106} @@ -43,38 +43,38 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 9 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 9 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── SetColumnName {"ColumnID":3,"Name":"j","TableID":106} @@ -95,11 +95,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ └── 5 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":3,"TableID":106} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} @@ -108,57 +108,57 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ └── 2 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":106} │ └── ValidateColumnNotNull {"ColumnID":3,"IndexIDForValidation":2,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":106} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":106} @@ -175,11 +175,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":106} @@ -189,10 +189,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":106} ├── CreateGCJobForIndex {"IndexID":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_1_of_7 index 4d73decf295d..c311870fc218 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_1_of_7 @@ -14,19 +14,19 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 13 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} └── 14 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_2_of_7 index bb09c5cc13aa..59cfacaee3ad 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_2_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_3_of_7 index 85e5850b766d..216e4e44b61d 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_3_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_4_of_7 index 7db3afcf62bd..3090c3e217b9 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_4_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_5_of_7 index 35e8d8b226fb..7a3b9b66cc15 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_5_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -41,13 +41,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_6_of_7 index 38cd1aad685e..33aca05162f2 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_6_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -41,13 +41,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_7_of_7 index 3d5c1b1d1ae5..07600169407a 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column.rollback_7_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} @@ -41,13 +41,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq index d2befd9a810d..6b89f15c86e5 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq @@ -10,18 +10,18 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"l","TableID":106} @@ -37,34 +37,34 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 8 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} + │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"l","TableID":106} @@ -85,11 +85,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} + │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ └── 6 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":2,"TableID":106} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} @@ -99,12 +99,12 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} @@ -112,7 +112,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} @@ -120,12 +120,12 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} @@ -133,25 +133,25 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ └── 2 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":106} │ └── ValidateColumnNotNull {"ColumnID":2,"IndexIDForValidation":2,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":106} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":106} @@ -168,10 +168,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":106} @@ -181,10 +181,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":106} ├── CreateGCJobForIndex {"IndexID":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_1_of_7 index 2ff96432aed6..45ec563d35dd 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_1_of_7 @@ -11,17 +11,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 11 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} └── 14 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_2_of_7 index ef10bdd1ddc6..a5db325e1a13 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_2_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -35,12 +35,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_3_of_7 index e5e954273a60..26db6189bfa1 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_3_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -35,12 +35,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_4_of_7 index 0fce5c06c58c..f50cbdf095fe 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_4_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -35,12 +35,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_5_of_7 index b83c1f97ae63..2a2b93ea079e 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_5_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -35,13 +35,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 10 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_6_of_7 index 1d98a23d6efb..579f0ce39eb7 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_6_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -35,13 +35,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 10 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_7_of_7 index a41489e7a59a..247fb458ceab 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_seq.rollback_7_of_7 @@ -11,15 +11,15 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} @@ -35,13 +35,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 10 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── UpdateTableBackReferencesInSequences {"BackReferencedColumnID":2,"BackReferencedTableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique index 760b2fd7924c..cd2099f2ffcf 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique @@ -9,18 +9,18 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":106} @@ -35,34 +35,34 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 8 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ └── 14 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":106} @@ -81,10 +81,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ ├── Stage 1 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ └── 4 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":2,"TableID":106} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} @@ -92,56 +92,56 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 7 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Validation operation │ │ └── ValidateIndex {"IndexID":2,"TableID":106} │ ├── Stage 8 of 15 in PostCommitPhase │ │ ├── 9 elements transitioning toward PUBLIC - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 4} - │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 4 (tbl_j_key+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key+)} + │ │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+)} + │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 5} + │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ └── 15 Mutation operations │ │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":106} │ │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":106} @@ -160,61 +160,61 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 9 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 5} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":5,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 10 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":4,"SourceIndexID":2,"TableID":106} │ ├── Stage 11 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":4,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 12 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":4,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 13 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":4,"TableID":106,"TemporaryIndexID":5} │ ├── Stage 14 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":4,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 15 of 15 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":4,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} + │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ └── 12 Mutation operations │ ├── MakeWriteOnlyColumnPublic {"ColumnID":2,"TableID":106} │ ├── RefreshStats {"TableID":106} @@ -230,13 +230,13 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":106} ├── CreateGCJobForIndex {"IndexID":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_10_of_15 index f16c561d4d77..165663547a4b 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_10_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,11 +48,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":106} @@ -63,14 +63,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_11_of_15 index 8ef392cc3264..d7d882d5aceb 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_11_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,11 +48,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":106} @@ -63,14 +63,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_12_of_15 index 77f235174f82..bd12554f86c1 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_12_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,11 +48,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":106} @@ -63,14 +63,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_13_of_15 index ea4e2dfa3474..46d751222dcf 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_13_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,12 +48,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":106} @@ -65,14 +65,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_14_of_15 index f5887e5a60a9..9d17dafc137c 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_14_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,12 +48,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":106} @@ -65,14 +65,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_15_of_15 index c20f688f1444..282e4a414231 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_15_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,12 +48,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":106} @@ -65,14 +65,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 5} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_1_of_15 index dd494a3f5ec0..e8257c9b92e5 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_1_of_15 @@ -10,17 +10,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 11 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} └── 12 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_2_of_15 index 8a7547980717..3623a3fad6ef 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_2_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,12 +31,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_3_of_15 index d71eea7d616f..cc22ff88cfd4 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_3_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,12 +31,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_4_of_15 index a0944f60dea2..342db0c79cc9 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_4_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,12 +31,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_5_of_15 index 90509d554747..a4f15e5d1a1f 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_5_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,13 +31,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_6_of_15 index d45ff991b3fd..bfca10a41263 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_6_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,13 +31,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_7_of_15 index 8729ea9e155d..c693bf7e48b7 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_7_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,13 +31,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_8_of_15 index e576ff7d476f..9e51fd4b0309 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_8_of_15 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} @@ -31,13 +31,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_9_of_15 index bd41f8f04234..22948bed5c66 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_default_unique.rollback_9_of_15 @@ -10,23 +10,23 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ ├── 14 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ └── 18 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"tbl_pkey","TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} @@ -48,10 +48,10 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} @@ -61,13 +61,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} └── 8 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_no_default b/pkg/sql/schemachanger/testdata/explain/add_column_no_default index e3ffd1d584a2..0e1413c7a2b9 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_no_default +++ b/pkg/sql/schemachanger/testdata/explain/add_column_no_default @@ -9,10 +9,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ └── 4 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":106} @@ -21,18 +21,18 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 4 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ └── 6 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":2,"TableID":106}} │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":106} @@ -43,7 +43,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ └── Stage 1 of 1 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ └── 3 Mutation operations │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":2,"TableID":106} │ ├── SetJobStateOnDescriptor {"DescriptorID":106} @@ -51,7 +51,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward PUBLIC - │ └── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 2} + │ └── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} └── 4 Mutation operations ├── MakeWriteOnlyColumnPublic {"ColumnID":2,"TableID":106} ├── RefreshStats {"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_no_default.rollback_1_of_1 b/pkg/sql/schemachanger/testdata/explain/add_column_no_default.rollback_1_of_1 index 53e79c759719..fbd201a12058 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_no_default.rollback_1_of_1 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_no_default.rollback_1_of_1 @@ -10,10 +10,10 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 1 (tbl_pkey)} └── 5 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":1,"Kind":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored index e072af5f7953..f71254b615ee 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored @@ -11,19 +11,19 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 11 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── SetColumnName {"ColumnID":3,"Name":"j","TableID":106} @@ -39,36 +39,36 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 8 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 15 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── SetColumnName {"ColumnID":3,"Name":"j","TableID":106} @@ -88,11 +88,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ └── 5 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":3,"TableID":106} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} @@ -101,57 +101,57 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ └── 2 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":106} │ └── ValidateColumnNotNull {"ColumnID":3,"IndexIDForValidation":2,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":106} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":106} @@ -168,11 +168,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":106} @@ -182,10 +182,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":106} ├── CreateGCJobForIndex {"IndexID":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_1_of_7 index b1dd1ec95d2b..86d51daf6136 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_1_of_7 @@ -12,18 +12,18 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 12 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} └── 13 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_2_of_7 index 28bdc4040fda..84039de09f7a 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_2_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,11 +39,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_3_of_7 index 1dec4a738e94..25be10826def 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_3_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,11 +39,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_4_of_7 index 5b6b4056deab..4dd899d334d0 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_4_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,11 +39,11 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_5_of_7 index b9e8c36ba28f..509eac7e26fc 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_5_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_6_of_7 index 4d6d6da15e23..5eb04cc5b757 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_6_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_7_of_7 index 4f8812de464d..b9292001b589 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored.rollback_7_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family index ec64866674a8..ffdcd64af60f 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family @@ -11,20 +11,20 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 9 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 12 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── AddColumnFamily {"FamilyID":1,"Name":"bob","TableID":106} @@ -41,38 +41,38 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 9 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 9 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"TableID":106}} │ ├── AddColumnFamily {"FamilyID":1,"Name":"bob","TableID":106} @@ -93,11 +93,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ └── 5 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":3,"TableID":106} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} @@ -106,57 +106,57 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ └── 2 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":106} │ └── ValidateColumnNotNull {"ColumnID":3,"IndexIDForValidation":2,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":106} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":106} @@ -173,11 +173,11 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":106} @@ -187,10 +187,10 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":106} ├── CreateGCJobForIndex {"IndexID":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_1_of_7 index 7d47427f6322..b0bbcb3388d1 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_1_of_7 @@ -12,19 +12,19 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 13 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} └── 14 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_2_of_7 index 411fba77cf23..4c059862c64b 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_2_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_3_of_7 index 4629551e0b32..d56bea067202 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_3_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_4_of_7 index 37982a96a13b..992732e8d671 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_4_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":106} @@ -39,12 +39,12 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_5_of_7 index b7b4aec5e4b1..7f7218d72deb 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_5_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -39,13 +39,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_6_of_7 index a0db10949297..74f65f6f05c6 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_6_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} @@ -39,13 +39,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_7_of_7 index 12585c09056a..af6ce9ac77c2 100644 --- a/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/add_column_with_stored_family.rollback_7_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} - │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} + │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} @@ -39,13 +39,13 @@ Schema change plan for rolling back ALTER TABLE ‹db›.public.‹tbl› ADD CO │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} + │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (tbl), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf index 994415e2c776..8f378c94fcd2 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf @@ -9,8 +9,8 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONS ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ └── 3 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"[FUNCTION 100105...","ConstraintID":2,"TableID":104,"Validity":2} │ ├── AddTableConstraintBackReferencesInFunctions {"BackReferencedConstraintID":2,"BackReferencedTableID":104} @@ -18,14 +18,14 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONS ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ └── 6 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"[FUNCTION 100105...","ConstraintID":2,"TableID":104,"Validity":2} │ ├── AddTableConstraintBackReferencesInFunctions {"BackReferencedConstraintID":2,"BackReferencedTableID":104} @@ -36,12 +36,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONS └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":2,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} └── 4 Mutation operations ├── MakeValidatedCheckConstraintPublic {"ConstraintID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_1_of_2 index 1424cf399d24..496836d6d8b3 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_1_of_2 @@ -10,8 +10,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} └── 6 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_2_of_2 index b3e7c6e68a0f..1671b5b270ee 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_udf.rollback_2_of_2 @@ -10,8 +10,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} └── 6 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_unvalidated b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_unvalidated index 7c7cc1290860..51c2081e36ce 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_unvalidated +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_unvalidated @@ -9,22 +9,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ └── 2 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":1} │ └── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} └── PreCommitPhase ├── Stage 1 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ └── 1 Mutation operation │ └── UndoAllInTxnImmediateMutationOpSideEffects └── Stage 2 of 2 in PreCommitPhase ├── 2 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} + │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} └── 2 Mutation operations ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":1} └── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla index f7c03fa03e6d..cb66760cc8d7 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla @@ -10,22 +10,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ └── 2 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":2} │ └── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ └── 4 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":2} │ ├── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} @@ -34,12 +34,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":2,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} └── 3 Mutation operations ├── MakeValidatedCheckConstraintPublic {"ConstraintID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_1_of_2 index 221801f2c3d5..db4a0e8e0898 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_1_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} └── 4 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_2_of_2 index 6657a1d17e89..ba3698d08d0f 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_vanilla.rollback_2_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} └── 4 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt index 49016482ba22..e0c75cbbce9b 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt @@ -10,8 +10,8 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ └── 4 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"(i \u003e nextval(104...","ConstraintID":2,"TableID":107,"Validity":2} │ ├── UpdateTableBackReferencesInTypes {"BackReferencedTableID":107} @@ -20,14 +20,14 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ └── 9 Mutation operations │ ├── AddCheckConstraint {"CheckExpr":"(i \u003e nextval(104...","ConstraintID":2,"TableID":107,"Validity":2} │ ├── UpdateTableBackReferencesInTypes {"BackReferencedTableID":107} @@ -41,12 +41,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHEC └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":2,"TableID":107} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} └── 6 Mutation operations ├── MakeValidatedCheckConstraintPublic {"ConstraintID":2,"TableID":107} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 index 9d845a48293c..5dcc7aea23d5 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} └── 9 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":107} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":107} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 index d3469905bc64..8cfc1daecbaf 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} └── 9 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":107} ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":107} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key index 68c681c531ee..d907d5ab83fb 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key @@ -11,22 +11,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› ADD CON ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ └── 2 Mutation operations │ ├── AddForeignKeyConstraint {"ConstraintID":2,"ReferencedTableID":105,"TableID":104,"Validity":2} │ └── SetConstraintName {"ConstraintID":2,"Name":"t1_i_fkey","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ └── 5 Mutation operations │ ├── AddForeignKeyConstraint {"ConstraintID":2,"ReferencedTableID":105,"TableID":104,"Validity":2} │ ├── SetConstraintName {"ConstraintID":2,"Name":"t1_i_fkey","TableID":104} @@ -36,12 +36,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› ADD CON └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ │ └── WRITE_ONLY → VALIDATED ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":2,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ └── VALIDATED → PUBLIC ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} └── 4 Mutation operations ├── MakeValidatedForeignKeyConstraintPublic {"ConstraintID":2,"ReferencedTableID":105,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_1_of_2 index 22d9797188cc..66dea8ffd850 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_1_of_2 @@ -12,8 +12,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t1› └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} └── 6 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveForeignKeyBackReference {"OriginConstraintID":2,"OriginTableID":104,"ReferencedTableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_2_of_2 index 6dc8d824d5a8..f182354c3dd8 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_foreign_key.rollback_2_of_2 @@ -12,8 +12,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t1› └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} └── 6 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveForeignKeyBackReference {"OriginConstraintID":2,"OriginTableID":104,"ReferencedTableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid index 0c3d666161b5..10546f49b757 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid @@ -8,21 +8,21 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ └── 11 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -38,40 +38,40 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ └── 16 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -92,57 +92,57 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM ├── PostCommitPhase │ ├── Stage 1 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ ├── Stage 6 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 7 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Validation operation │ │ └── ValidateIndex {"IndexID":2,"TableID":104} │ ├── Stage 8 of 15 in PostCommitPhase │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} + │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ └── 9 Mutation operations │ │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} │ │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":104} @@ -155,62 +155,62 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 9 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 5} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 5} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":5,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 10 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":4,"SourceIndexID":2,"TableID":104} │ ├── Stage 11 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 12 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 13 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":4,"TableID":104,"TemporaryIndexID":5} │ ├── Stage 14 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 15 of 15 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":4,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 4 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 12 Mutation operations │ ├── RemoveColumnNotNull {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} @@ -226,15 +226,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 4 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── PUBLIC → TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── PUBLIC → TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} + │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ ├── 1 element transitioning toward ABSENT - │ │ └── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 9 Mutation operations │ ├── MakeIndexAbsent {"IndexID":1,"TableID":104} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -247,9 +247,9 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 3 of 4 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ └── 5 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} @@ -258,15 +258,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIM │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 4 of 4 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 5} ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 index 15ed0205fa57..58f5a2450c6f 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 index ffc16c0c8c97..58c5af22842b 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 index 6a682bd4fe2e..3244fe64ea06 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 index 2854568be3a4..1a3f12709d99 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 index 2907b1fc2ffe..4e1a08b46420 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 index bc34eb415dce..25c5bbdf595a 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 index b042511f5b0e..e46e3f663dc9 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 @@ -9,20 +9,20 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} ├── 10 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 16 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 index a7c799ef7954..9528db8f2ed9 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 index 7ef09e8bc0d9..b4d95e57d649 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 index f3885ffd160a..077872be713e 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 index 5ab23b6c14e6..1a90603d6d6f 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 index 36a78cd8d76b..5e34cc48cc74 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 index 461e7147dff6..d198c7243aae 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 index 52e7d0bc9a48..9d8cef81960a 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 index 72f4946c7860..c91ed021179b 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,10 +44,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} @@ -57,10 +57,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index index 1d43e5943fb3..ca5b12144565 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index @@ -10,22 +10,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONS ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ └── 2 Mutation operations │ ├── AddUniqueWithoutIndexConstraint {"ConstraintID":2,"TableID":104,"Validity":2} │ └── SetConstraintName {"ConstraintID":2,"Name":"unique_j","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ ├── ABSENT → WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ └── 4 Mutation operations │ ├── AddUniqueWithoutIndexConstraint {"ConstraintID":2,"TableID":104,"Validity":2} │ ├── SetConstraintName {"ConstraintID":2,"Name":"unique_j","TableID":104} @@ -34,12 +34,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONS └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── WRITE_ONLY → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":2,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── VALIDATED → PUBLIC UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} └── 3 Mutation operations ├── MakeValidatedUniqueWithoutIndexConstraintPublic {"ConstraintID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_1_of_2 index 38e1535718f0..763f794b2629 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_1_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} └── 4 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveUniqueWithoutIndexConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_2_of_2 index 35bc46086aa8..d6c8d2abe6b3 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_add_unique_without_index.rollback_2_of_2 @@ -11,8 +11,8 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ ├── WRITE_ONLY → ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} └── 4 Mutation operations ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── RemoveUniqueWithoutIndexConstraint {"ConstraintID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null index 88b6b80f6864..6842d9fac735 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null @@ -8,18 +8,18 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER CO ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ └── 1 Mutation operation │ └── MakeAbsentColumnNotNullWriteOnly {"ColumnID":2,"TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ └── 3 Mutation operations │ ├── MakeAbsentColumnNotNullWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetJobStateOnDescriptor {"DescriptorID":104,"Initialize":true} @@ -27,12 +27,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER CO └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ └── 1 Validation operation │ └── ValidateColumnNotNull {"ColumnID":2,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} └── 3 Mutation operations ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_1_of_2 index a4f2ae33e9e9..9da334e70368 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_1_of_2 @@ -9,7 +9,7 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} └── 3 Mutation operations ├── RemoveColumnNotNull {"ColumnID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_2_of_2 index 5351379d9c7f..2adfab397553 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_column_set_not_null.rollback_2_of_2 @@ -9,7 +9,7 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} └── 3 Mutation operations ├── RemoveColumnNotNull {"ColumnID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid index 5ef2771fcfb2..6af1ec160801 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid @@ -8,21 +8,21 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ └── 11 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -38,40 +38,40 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ ├── 7 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ └── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ └── 16 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -92,57 +92,57 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PostCommitPhase │ ├── Stage 1 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ ├── Stage 6 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 7 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Validation operation │ │ └── ValidateIndex {"IndexID":2,"TableID":104} │ ├── Stage 8 of 15 in PostCommitPhase │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} + │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ └── 9 Mutation operations │ │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} │ │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":104} @@ -155,62 +155,62 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 9 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 5} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 5} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":5,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 10 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":4,"SourceIndexID":2,"TableID":104} │ ├── Stage 11 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 12 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 13 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":4,"TableID":104,"TemporaryIndexID":5} │ ├── Stage 14 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 15 of 15 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":4,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 4 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 12 Mutation operations │ ├── RemoveColumnNotNull {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} @@ -226,15 +226,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 4 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── PUBLIC → TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── PUBLIC → TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} + │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ ├── 1 element transitioning toward ABSENT - │ │ └── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 9 Mutation operations │ ├── MakeIndexAbsent {"IndexID":1,"TableID":104} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -247,9 +247,9 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 3 of 4 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ └── 5 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":104} @@ -258,15 +258,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 4 of 4 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 5} ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 index 4ab075eaa43f..8aae6772ae2e 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 index 4cf301f704f9..c593553caded 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 index 251564249ec1..81e63732c683 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,11 +44,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -59,11 +59,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 index 8ff37f646c67..d928096a913a 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 index e0df1856f617..b67333cd4d83 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 index e46d2b65c57d..623d7dbde4e6 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,12 +44,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -61,11 +61,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 index 63a6065a5a97..9223b9431014 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 @@ -9,20 +9,20 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} ├── 10 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 16 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 index 96446ee03efb..f8379e6be15b 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 index d9da09252e68..020240005a73 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 index 149fed8a1c88..0242cf969c01 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,10 +38,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 index 5f2ef6b5144f..bb538e330cca 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 index 4f85ba7b67e4..d4fbcc17ffa1 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 index 57f88068d1ac..2dc0053708ad 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 index f6ba13c79750..671cfba95934 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 @@ -9,18 +9,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ └── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 index 451803440dd0..fa9065b5f2cc 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 @@ -9,21 +9,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"rowid","TableID":104} │ ├── MakeValidatedColumnNotNullPublic {"ColumnID":2,"TableID":104} @@ -44,10 +44,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward ABSENT - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} @@ -57,10 +57,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash index 71ce456ce3ff..21b18bdc26ab 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash @@ -8,31 +8,31 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 19 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ └── 22 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"IsHidden":true,"TableID":104}} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_j_...","TableID":104} @@ -59,60 +59,60 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 19 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 19 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ └── 28 Mutation operations │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":3,"IsHidden":true,"TableID":104}} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_j_...","TableID":104} @@ -145,13 +145,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ │ └── ABSENT → WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 5} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 5} │ │ └── 6 Mutation operations │ │ ├── MakeDeleteOnlyColumnWriteOnly {"ColumnID":3,"TableID":104} │ │ ├── MakeAbsentColumnNotNullWriteOnly {"ColumnID":3,"TableID":104} @@ -161,15 +161,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 2 Backfill operations │ │ ├── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ │ └── BackfillIndex {"IndexID":4,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":4,"TableID":104} @@ -177,8 +177,8 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── MakeBackfilledIndexMerging {"IndexID":4,"TableID":104} @@ -186,15 +186,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 2 Backfill operations │ │ ├── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ │ └── MergeIndex {"BackfilledIndexID":4,"TableID":104,"TemporaryIndexID":5} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── MakeMergedIndexWriteOnly {"IndexID":4,"TableID":104} @@ -202,10 +202,10 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── WRITE_ONLY → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} + │ │ ├── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ └── 4 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":104} │ ├── ValidateIndex {"IndexID":4,"TableID":104} @@ -214,21 +214,21 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} + │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ ├── 5 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 17 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":104} @@ -249,12 +249,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -265,11 +265,11 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 5} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_1_of_7 index 13b44d367ed1..30e8eb1aec1f 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_1_of_7 @@ -9,30 +9,30 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 24 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} └── 25 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_2_of_7 index d5b8c6338494..e74da56636c6 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_2_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,14 +58,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 9 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_3_of_7 index 6d918ca8b5e0..ab586f6c1c99 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_3_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,14 +58,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 9 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_4_of_7 index c959203e9750..e8a85bdfb946 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_4_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,14 +58,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 9 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_5_of_7 index fac5dabe563c..755446c7c9c6 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_5_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,16 +58,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 10 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 11 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_6_of_7 index 9c2d4f5dbd05..a051c15303ce 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_6_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,16 +58,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 10 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 11 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_7_of_7 index 03cbe0433f77..f0e47aa031f8 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_using_hash.rollback_7_of_7 @@ -9,28 +9,28 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 22 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} - │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} - │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 24 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -58,16 +58,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 10 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 11 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla index 89676cc4ead2..9a7e3924d383 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla @@ -9,22 +9,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 11 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ └── 13 Mutation operations │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":2,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":3}} │ ├── AddColumnToIndex {"ColumnID":2,"IndexID":2,"TableID":104} @@ -42,42 +42,42 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 11 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 11 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ └── 19 Mutation operations │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":2,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":3}} │ ├── MaybeAddSplitForIndex {"IndexID":2,"TableID":104} @@ -101,10 +101,10 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 5} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 5} │ │ └── 4 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":5,"TableID":104} @@ -112,15 +112,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 2 Backfill operations │ │ ├── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ │ └── BackfillIndex {"IndexID":4,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":4,"TableID":104} @@ -128,8 +128,8 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── MakeBackfilledIndexMerging {"IndexID":4,"TableID":104} @@ -137,15 +137,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 2 Backfill operations │ │ ├── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ │ └── MergeIndex {"BackfilledIndexID":4,"TableID":104,"TemporaryIndexID":5} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── MakeMergedIndexWriteOnly {"IndexID":4,"TableID":104} @@ -153,25 +153,25 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ └── 2 Validation operations │ ├── ValidateIndex {"IndexID":2,"TableID":104} │ └── ValidateIndex {"IndexID":4,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 12 Mutation operations │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":104} @@ -187,12 +187,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -203,11 +203,11 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PR │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 5} ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_1_of_7 index 3c17a50bd55d..08e27a412d67 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_1_of_7 @@ -10,21 +10,21 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 15 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} └── 17 Mutation operations ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_2_of_7 index ab149e715c3d..61e9ba51cbc8 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_2_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":2,"TableID":104} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 8 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_3_of_7 index e6bf40a1cd72..7df1ec3d3a86 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_3_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":2,"TableID":104} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 8 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_4_of_7 index 42f397d9f935..e27362fc66e8 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_4_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":2,"TableID":104} @@ -41,12 +41,12 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 6 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 8 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_5_of_7 index 346e3313e6e6..6375dd2981da 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_5_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":104} @@ -41,14 +41,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 10 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_6_of_7 index fdd673caf507..fd6c8d467906 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_6_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":104} @@ -41,14 +41,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 10 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_7_of_7 index 624933368741..094fb94fe672 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_alter_primary_key_vanilla.rollback_7_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 13 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ └── 15 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} @@ -41,14 +41,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› A │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5} └── 10 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_check b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_check index eb3a1642db5b..72ad547f1abb 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_check +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_check @@ -8,22 +8,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CON ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ └── 2 Mutation operations │ ├── MakePublicCheckConstraintValidated {"ConstraintID":2,"TableID":104} │ └── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} + │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ └── 4 Mutation operations │ ├── MakePublicCheckConstraintValidated {"ConstraintID":2,"TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -32,7 +32,7 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CON └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── VALIDATED → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── VALIDATED → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} └── 3 Mutation operations ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_fk b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_fk index 5dd39fe0cd84..55e925e8386b 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_fk +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_fk @@ -9,22 +9,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› DROP CO ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ └── 2 Mutation operations │ ├── MakePublicForeignKeyConstraintValidated {"ConstraintID":2,"TableID":105} │ └── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":105} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── VALIDATED → PUBLIC ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} - │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} + │ │ │ ├── VALIDATED → PUBLIC ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} + │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ └── 5 Mutation operations │ ├── MakePublicForeignKeyConstraintValidated {"ConstraintID":2,"TableID":105} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":105} @@ -34,7 +34,7 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› DROP CO └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── VALIDATED → ABSENT ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} + │ └── VALIDATED → ABSENT ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} └── 5 Mutation operations ├── RemoveForeignKeyBackReference {"OriginConstraintID":2,"OriginTableID":105,"ReferencedTableID":104} ├── RemoveForeignKeyConstraint {"ConstraintID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_uwi b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_uwi index 5098f2969495..f3439b8534e9 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_uwi +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_drop_constraint_uwi @@ -10,22 +10,22 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CON ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ └── 2 Mutation operations │ ├── MakePublicUniqueWithoutIndexConstraintValidated {"ConstraintID":2,"TableID":104} │ └── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── VALIDATED → PUBLIC UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ │ ├── VALIDATED → PUBLIC UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} + │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ ├── PUBLIC → VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ └── 4 Mutation operations │ ├── MakePublicUniqueWithoutIndexConstraintValidated {"ConstraintID":2,"TableID":104} │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} @@ -34,7 +34,7 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CON └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── VALIDATED → ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── VALIDATED → ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} └── 3 Mutation operations ├── RemoveUniqueWithoutIndexConstraint {"ConstraintID":2,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint index a354490dc257..bd58156db52d 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint @@ -9,11 +9,11 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ └── 4 Mutation operations │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} │ ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":3,"TableID":104,"Validity":2} @@ -22,20 +22,20 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 2 elements transitioning toward PUBLIC - │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} - │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ │ │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} + │ │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} + │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} - │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ │ ├── ABSENT → WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} + │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ ├── PUBLIC → ABSENT CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ └── 6 Mutation operations │ ├── SetConstraintName {"ConstraintID":2,"Name":"crdb_internal_co...","TableID":104} │ ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":3,"TableID":104,"Validity":2} @@ -46,12 +46,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE └── PostCommitPhase ├── Stage 1 of 2 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ │ └── WRITE_ONLY → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ └── 1 Validation operation │ └── ValidateConstraint {"ConstraintID":3,"TableID":104} └── Stage 2 of 2 in PostCommitPhase ├── 1 element transitioning toward PUBLIC - │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ └── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} └── 3 Mutation operations ├── MakeValidatedCheckConstraintPublic {"ConstraintID":3,"TableID":104} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_1_of_2 index aac67a68f839..9774a1b47f32 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_1_of_2 @@ -10,11 +10,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› V └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} + │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} └── 6 Mutation operations ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":1} ├── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_2_of_2 index 700c6900fe95..a033f58c7a9e 100644 --- a/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/alter_table_validate_constraint.rollback_2_of_2 @@ -10,11 +10,11 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› V └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} - │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ ├── ABSENT → PUBLIC CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} + │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} ├── 2 elements transitioning toward ABSENT - │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} - │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ ├── WRITE_ONLY → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} + │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} └── 6 Mutation operations ├── AddCheckConstraint {"CheckExpr":"i \u003e 0:::INT8","ConstraintID":2,"TableID":104,"Validity":1} ├── SetConstraintName {"ConstraintID":2,"Name":"check_i","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function b/pkg/sql/schemachanger/testdata/explain/create_function index c9b0401de982..3f3ff3c86495 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function +++ b/pkg/sql/schemachanger/testdata/explain/create_function @@ -28,14 +28,14 @@ Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹f›(IN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 110} - │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 110, ReferencedDescID: 101} - │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 110} - │ │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 110} - │ │ ├── ABSENT → PUBLIC Owner:{DescID: 110} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110, Name: admin} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110, Name: root} - │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 110} + │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} + │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} + │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 110 (f+)} + │ │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 110 (f+)} + │ │ ├── ABSENT → PUBLIC Owner:{DescID: 110 (f+)} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "admin"} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "root"} + │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 110 (f+)} │ └── 10 Mutation operations │ ├── CreateFunctionDescriptor {"Function":{"FunctionID":110}} │ ├── SetFunctionName {"FunctionID":110,"Name":"f"} @@ -50,26 +50,26 @@ Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹f›(IN └── PreCommitPhase ├── Stage 1 of 2 in PreCommitPhase │ ├── 8 elements transitioning toward PUBLIC - │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 110} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 110, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 110} - │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 110} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 110} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 110, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 110, Name: root} - │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 110} + │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 110 (f+)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 110 (f+)} + │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 110 (f+)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 110 (f+)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 110 (f+), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 110 (f+), Name: "root"} + │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 110 (f+)} │ └── 1 Mutation operation │ └── UndoAllInTxnImmediateMutationOpSideEffects └── Stage 2 of 2 in PreCommitPhase ├── 8 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC Function:{DescID: 110} - │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 110, ReferencedDescID: 101} - │ ├── ABSENT → PUBLIC FunctionName:{DescID: 110} - │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 110} - │ ├── ABSENT → PUBLIC Owner:{DescID: 110} - │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110, Name: admin} - │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110, Name: root} - │ └── ABSENT → PUBLIC FunctionBody:{DescID: 110} + │ ├── ABSENT → PUBLIC Function:{DescID: 110 (f+)} + │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} + │ ├── ABSENT → PUBLIC FunctionName:{DescID: 110 (f+)} + │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 110 (f+)} + │ ├── ABSENT → PUBLIC Owner:{DescID: 110 (f+)} + │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "admin"} + │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "root"} + │ └── ABSENT → PUBLIC FunctionBody:{DescID: 110 (f+)} └── 11 Mutation operations ├── CreateFunctionDescriptor {"Function":{"FunctionID":110}} ├── SetFunctionName {"FunctionID":110,"Name":"f"} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_1_of_7 index 9df6f0f8a076..aab8c2c0c501 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_1_of_7 @@ -13,21 +13,21 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 15 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 17 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":104} @@ -48,7 +48,7 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── DROPPED → ABSENT Function:{DescID: 105} + │ └── DROPPED → ABSENT Function:{DescID: 105 (t-)} └── 4 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_2_of_7 index 55d0150235b3..acea13c7c82f 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_2_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":104} @@ -46,10 +46,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 7 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_3_of_7 index a8adfa7bb0e3..9588366aa019 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_3_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":104} @@ -46,10 +46,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 7 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_4_of_7 index 317b709f2f02..f4e75fde92bf 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_4_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":104} @@ -46,10 +46,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 7 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_5_of_7 index 23bc1a6146f7..7e6fe7fe484c 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_5_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":104} @@ -46,11 +46,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 8 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── MakeIndexAbsent {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_6_of_7 index 357a847401a0..a451904c7844 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_6_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":104} @@ -46,11 +46,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 8 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── MakeIndexAbsent {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_7_of_7 index 2eca5839a9ca..b02610951df5 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.rollback_7_of_7 @@ -13,20 +13,20 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 14 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── DESCRIPTOR_ADDED → DROPPED Function:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 16 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":104} @@ -46,11 +46,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Function:{DescID: 105} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DROPPED → ABSENT Function:{DescID: 105 (t-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 8 Mutation operations ├── DeleteDescriptor {"DescriptorID":105} ├── MakeIndexAbsent {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_1_of_2 index 60779c9bd043..92d1d70a0fc4 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_1_of_2 @@ -11,13 +11,13 @@ Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹t›() ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 105} - │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105} - │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: root} - │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 105} + │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} + │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "admin"} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "root"} + │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 105 (t+)} │ └── 9 Mutation operations │ ├── CreateFunctionDescriptor {"Function":{"FunctionID":105}} │ ├── SetFunctionName {"FunctionID":105,"Name":"t"} @@ -31,24 +31,24 @@ Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹t›() └── PreCommitPhase ├── Stage 1 of 2 in PreCommitPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 105} + │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 105 (t+)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t+)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t+)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t+), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t+), Name: "root"} + │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t+)} │ └── 1 Mutation operation │ └── UndoAllInTxnImmediateMutationOpSideEffects └── Stage 2 of 2 in PreCommitPhase ├── 7 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC Function:{DescID: 105} - │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105} - │ ├── ABSENT → PUBLIC Owner:{DescID: 105} - │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: admin} - │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: root} - │ └── ABSENT → PUBLIC FunctionBody:{DescID: 105} + │ ├── ABSENT → PUBLIC Function:{DescID: 105 (t+)} + │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} + │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105 (t+)} + │ ├── ABSENT → PUBLIC Owner:{DescID: 105 (t+)} + │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "admin"} + │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "root"} + │ └── ABSENT → PUBLIC FunctionBody:{DescID: 105 (t+)} └── 10 Mutation operations ├── CreateFunctionDescriptor {"Function":{"FunctionID":105}} ├── SetFunctionName {"FunctionID":105,"Name":"t"} diff --git a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_2_of_2 index 91ea743b87ad..8b5bfb230a5d 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/create_function_in_txn.statement_2_of_2 @@ -12,15 +12,15 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 7 Mutation operations │ ├── MakeAbsentIndexBackfilling {"IsSecondaryIndex":true} │ ├── AddColumnToIndex {"ColumnID":2,"IndexID":2,"TableID":104} @@ -32,42 +32,42 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 12 elements transitioning toward PUBLIC - │ │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 105} - │ │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105} - │ │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105} - │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t+)} + │ │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t+), Name: "admin"} + │ │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t+), Name: "root"} + │ │ │ ├── DESCRIPTOR_ADDED → ABSENT Function:{DescID: 105 (t+)} + │ │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} + │ │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 105 (t+)} + │ │ │ ├── PUBLIC → ABSENT FunctionBody:{DescID: 105 (t+)} + │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 12 elements transitioning toward PUBLIC - │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: root} - │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 105} - │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105} - │ │ ├── ABSENT → PUBLIC FunctionBody:{DescID: 105} - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "admin"} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "root"} + │ │ ├── ABSENT → DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} + │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 105 (t+)} + │ │ ├── ABSENT → PUBLIC FunctionBody:{DescID: 105 (t+)} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 21 Mutation operations │ ├── CreateFunctionDescriptor {"Function":{"FunctionID":105}} │ ├── SetFunctionName {"FunctionID":105,"Name":"t"} @@ -93,8 +93,8 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} │ │ └── 4 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -102,12 +102,12 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -115,7 +115,7 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -123,12 +123,12 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 4 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -136,18 +136,18 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":2,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── DESCRIPTOR_ADDED → PUBLIC Function:{DescID: 105} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── DESCRIPTOR_ADDED → PUBLIC Function:{DescID: 105 (t+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ └── 9 Mutation operations │ ├── MarkDescriptorAsPublic {"DescriptorID":105} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -160,8 +160,8 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index b/pkg/sql/schemachanger/testdata/explain/create_index index 3c00d635aeef..e09b41d0e9bc 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index +++ b/pkg/sql/schemachanger/testdata/explain/create_index @@ -9,15 +9,15 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 9 Mutation operations │ ├── MakeAbsentIndexBackfilling {"IsSecondaryIndex":true} │ ├── SetAddedIndexPartialPredicate {"Expr":"v = b'@':::@1001...","IndexID":2,"TableID":106} @@ -31,28 +31,28 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 5 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 15 Mutation operations │ ├── MakeAbsentIndexBackfilling {"IsSecondaryIndex":true} │ ├── MaybeAddSplitForIndex {"IndexID":2,"TableID":106} @@ -72,8 +72,8 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (t), IndexID: 3} │ │ └── 5 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -82,12 +82,12 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 5 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -96,7 +96,7 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 5 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -105,12 +105,12 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":106,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ └── 5 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -119,17 +119,17 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":2,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 9 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":106} │ ├── RefreshStats {"TableID":106} @@ -142,8 +142,8 @@ Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›. │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":106} ├── CreateGCJobForIndex {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_1_of_7 index c062e98dd7d2..ac59eab5c4c5 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_1_of_7 @@ -10,14 +10,14 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 8 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} └── 12 Mutation operations ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_2_of_7 index b36011629d3e..8845c4eca0c1 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_2_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":106} @@ -31,9 +31,9 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_3_of_7 index 604a6a23b9ac..2c4059134615 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_3_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":106} @@ -31,9 +31,9 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_4_of_7 index dd3c83bdfd05..481dcc582658 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_4_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 11 Mutation operations │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":2,"TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"Kind":1,"TableID":106} @@ -31,9 +31,9 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 7 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} ├── MakeIndexAbsent {"IndexID":3,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_5_of_7 index b9c179b30e55..79aea7ad0ee2 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_5_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 13 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":106} @@ -33,10 +33,10 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_6_of_7 index 1cfc5bf1615e..390135438271 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_6_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 13 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":2,"IndexID":3,"TableID":106} @@ -33,10 +33,10 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_7_of_7 index 1687f3036e86..5f34b684fc97 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/create_index.rollback_7_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ └── 13 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":106} │ ├── RemoveDroppedIndexPartialPredicate {"IndexID":2,"TableID":106} @@ -33,10 +33,10 @@ Schema change plan for rolling back CREATE INDEX ‹idx1› ON ‹defaultdb›.p │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (t), IndexID: 3} └── 8 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":106} ├── CreateGCJobForIndex {"IndexID":2,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/create_schema b/pkg/sql/schemachanger/testdata/explain/create_schema index 489db99ccf9b..9f25ff8bce52 100644 --- a/pkg/sql/schemachanger/testdata/explain/create_schema +++ b/pkg/sql/schemachanger/testdata/explain/create_schema @@ -7,13 +7,13 @@ Schema change plan for CREATE SCHEMA ‹defaultdb›.‹sc›; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── ABSENT → DESCRIPTOR_ADDED Schema:{DescID: 104} - │ │ ├── ABSENT → PUBLIC SchemaName:{DescID: 104} - │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} - │ │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 104, ReferencedDescID: 100} - │ │ ├── ABSENT → PUBLIC Owner:{DescID: 104} - │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: admin} - │ │ └── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: root} + │ │ ├── ABSENT → DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} + │ │ ├── ABSENT → PUBLIC SchemaName:{DescID: 104 (sc+)} + │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} + │ │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} + │ │ ├── ABSENT → PUBLIC Owner:{DescID: 104 (sc+)} + │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "admin"} + │ │ └── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ └── 7 Mutation operations │ ├── CreateSchemaDescriptor {"SchemaID":104} │ ├── SetSchemaName {"Name":"sc","SchemaID":104} @@ -25,24 +25,24 @@ Schema change plan for CREATE SCHEMA ‹defaultdb›.‹sc›; └── PreCommitPhase ├── Stage 1 of 2 in PreCommitPhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── DESCRIPTOR_ADDED → ABSENT Schema:{DescID: 104} - │ │ ├── PUBLIC → ABSENT SchemaName:{DescID: 104} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 104, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: admin} - │ │ └── PUBLIC → ABSENT UserPrivileges:{DescID: 104, Name: root} + │ │ ├── DESCRIPTOR_ADDED → ABSENT Schema:{DescID: 104 (sc+)} + │ │ ├── PUBLIC → ABSENT SchemaName:{DescID: 104 (sc+)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 104 (sc+)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (sc+), Name: "admin"} + │ │ └── PUBLIC → ABSENT UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ └── 1 Mutation operation │ └── UndoAllInTxnImmediateMutationOpSideEffects └── Stage 2 of 2 in PreCommitPhase ├── 7 elements transitioning toward PUBLIC - │ ├── ABSENT → PUBLIC Schema:{DescID: 104} - │ ├── ABSENT → PUBLIC SchemaName:{DescID: 104} - │ ├── ABSENT → PUBLIC Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} - │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 104, ReferencedDescID: 100} - │ ├── ABSENT → PUBLIC Owner:{DescID: 104} - │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: admin} - │ └── ABSENT → PUBLIC UserPrivileges:{DescID: 104, Name: root} + │ ├── ABSENT → PUBLIC Schema:{DescID: 104 (sc+)} + │ ├── ABSENT → PUBLIC SchemaName:{DescID: 104 (sc+)} + │ ├── ABSENT → PUBLIC Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} + │ ├── ABSENT → PUBLIC SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} + │ ├── ABSENT → PUBLIC Owner:{DescID: 104 (sc+)} + │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "admin"} + │ └── ABSENT → PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "root"} └── 8 Mutation operations ├── CreateSchemaDescriptor {"SchemaID":104} ├── SetSchemaName {"Name":"sc","SchemaID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic b/pkg/sql/schemachanger/testdata/explain/drop_column_basic index fae6bd507b03..ac18e10bff8b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic @@ -13,18 +13,18 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → ABSENT ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ └── 9 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -38,34 +38,34 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 4 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → ABSENT ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ └── 13 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -83,61 +83,61 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":104,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":2,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} @@ -151,12 +151,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":104} @@ -167,12 +167,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 3} ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_1_of_7 index 0c108a8abd43..5e795fc7f9c0 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_1_of_7 @@ -14,17 +14,17 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} ├── 7 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} └── 13 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_2_of_7 index 3686eca4165a..928dbc84de40 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_2_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_3_of_7 index fb1f41b959dc..d949df279d3f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_3_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_4_of_7 index 8130f96dfee2..eee9c976596a 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_4_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} ├── MakeIndexAbsent {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_5_of_7 index 33ad1a3e2668..bbbe3493836c 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_5_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_6_of_7 index 52f2a87d4f75..2e84a9f42841 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_6_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_7_of_7 index 07543d547955..41c3ec3001cd 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_basic.rollback_7_of_7 @@ -14,16 +14,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ └── 12 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── UpsertColumnComment {"ColumnID":2,"Comment":"j has a comment","PGAttributeNum":2,"TableID":104} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index index a9e18f9b6326..7ec3b1a57ac4 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index @@ -8,18 +8,18 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ └── 9 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -33,34 +33,34 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ ├── 5 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ └── 13 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -78,65 +78,65 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx-)} │ └── 14 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":3,"TableID":104} @@ -154,14 +154,14 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -173,13 +173,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_1_of_7 index 3e5e8e03bda1..1f8d9bb46261 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_1_of_7 @@ -9,17 +9,17 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} ├── 5 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} └── 15 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_2_of_7 index f9d7bf3903fc..a9036d2ef681 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_2_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,9 +36,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_3_of_7 index 8782b8d2d30c..d759e98396d6 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_3_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,9 +36,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_4_of_7 index 6d19a55cd8c8..d67084f935ee 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_4_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,9 +36,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_5_of_7 index f86813f1e336..102b4f94bf22 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_5_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,10 +36,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_6_of_7 index 8f1f791de63a..d5f166954a21 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_6_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,10 +36,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_7_of_7 index b6bb80e4e82a..932f03991643 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_computed_index.rollback_7_of_7 @@ -9,16 +9,16 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 14 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_id...","TableID":104} @@ -36,10 +36,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_10_of_15 index 29781dc34eb3..dc2d9ce7dc2d 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_10_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,11 +57,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":6,"TableID":104} @@ -72,11 +72,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_11_of_15 index be4930b96ed4..eb81bc781ce2 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_11_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,11 +57,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":6,"TableID":104} @@ -72,11 +72,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_12_of_15 index ed1190b55971..f9ede048b58b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_12_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,11 +57,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":6,"TableID":104} @@ -72,11 +72,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_13_of_15 index 792acd31e61f..ac6cef17b420 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_13_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,12 +57,12 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -74,11 +74,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_14_of_15 index 5328b28e9ce0..f17afa815a56 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_14_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── MERGE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,12 +57,12 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -74,11 +74,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_15_of_15 index a88f1dc604cc..91f04c86e51f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_15_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── WRITE_ONLY → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,12 +57,12 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":5,"TableID":104} @@ -74,11 +74,11 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 6} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_1_of_15 index 281f77422fa9..9340c781eee4 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_1_of_15 @@ -10,19 +10,19 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 5 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} ├── 7 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 17 Mutation operations ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} ├── RefreshStats {"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_2_of_15 index 2a31ce52a60e..d6db7de53fee 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_2_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,9 +41,9 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_3_of_15 index 9e34949107ec..749dcccefd1e 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_3_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,9 +41,9 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_4_of_15 index 0a748c0457b6..5154a777d037 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_4_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,9 +41,9 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_5_of_15 index 41c23b2c513e..5663667de8b8 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_5_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,10 +41,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_6_of_15 index a3ccd04e01d8..4058a40b555e 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_6_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,10 +41,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_7_of_15 index 7999da33f845..1e4d86c77f6a 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_7_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,10 +41,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_8_of_15 index 80992be8f873..3bdc832a4a45 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_8_of_15 @@ -10,18 +10,18 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 16 Mutation operations │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} │ ├── RefreshStats {"TableID":104} @@ -41,10 +41,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_9_of_15 index 3845455265ad..5abb6140be0b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.rollback_9_of_15 @@ -10,26 +10,26 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} + │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 12 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} - │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── BACKFILL_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} + │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ └── 24 Mutation operations │ ├── SetIndexName {"IndexID":1,"Name":"t_pkey","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -57,10 +57,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 6 Mutation operations │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":104} @@ -70,10 +70,10 @@ Schema change plan for rolling back CREATE UNIQUE INDEX ‹idx› ON ‹defaultd │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_1_of_2 index c5205f2ae889..558e6bbf5c4a 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_1_of_2 @@ -8,20 +8,20 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 11 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -37,38 +37,38 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 4 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ ├── 5 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 15 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -88,67 +88,67 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ └── 16 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4,"TableID":104} @@ -168,15 +168,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 9 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -189,13 +189,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_2_of_2 index 0f9c9bb1535d..afba6815c05b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_create_index_separate_statements.statement_2_of_2 @@ -11,38 +11,38 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 4 elements transitioning toward PUBLIC - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ │ │ └── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} + │ │ │ └── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ ├── 5 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} - │ │ └── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ └── 15 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -62,64 +62,64 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi ├── PostCommitPhase │ ├── Stage 1 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ │ └── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ │ └── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 7 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Validation operation │ │ └── ValidateIndex {"IndexID":3,"TableID":104} │ ├── Stage 8 of 15 in PostCommitPhase │ │ ├── 7 elements transitioning toward PUBLIC - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} - │ │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 5} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} + │ │ │ ├── ABSENT → BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx+)} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 5 (idx+)} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} + │ │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ └── 15 Mutation operations │ │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} │ │ ├── SetIndexName {"IndexID":1,"Name":"crdb_internal_in...","TableID":104} @@ -138,71 +138,71 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 9 of 15 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 6} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 6} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":6,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 10 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── BACKFILL_ONLY → BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":5,"SourceIndexID":3,"TableID":104} │ ├── Stage 11 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── BACKFILLED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":5,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 12 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── DELETE_ONLY → MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":5,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 13 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── MERGE_ONLY → MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":5,"TableID":104,"TemporaryIndexID":6} │ ├── Stage 14 of 15 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── MERGED → WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":5,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 15 of 15 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── WRITE_ONLY → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":5,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ ├── 6 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ ├── 11 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ └── 21 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4,"TableID":104} @@ -227,19 +227,19 @@ Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹publi │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 6} + │ ├── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ ├── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 6} ├── 8 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 4} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} └── 12 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index index c77faff9d2ce..d6ceb7b1a9cc 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index @@ -11,19 +11,19 @@ Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 6} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ └── 10 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":3,"TableID":106} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} @@ -38,36 +38,36 @@ Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 5 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 6} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 5 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 6} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ └── 14 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":3,"TableID":106} │ ├── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":106} @@ -86,62 +86,62 @@ Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106, IndexID: 7} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 106 (test), IndexID: 7} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":7,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":6,"SourceIndexID":4,"TableID":106} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":6,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":6,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":6,"TableID":106,"TemporaryIndexID":7} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":6,"TableID":106} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":106} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":6,"TableID":106} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: test_pkey, IndexID: 6} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 6 (test_pkey+)} │ ├── 4 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106, ColumnID: 3} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ └── 11 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":3,"TableID":106} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":4,"TableID":106} @@ -156,13 +156,13 @@ Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi-), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ └── 8 Mutation operations │ ├── MakeIndexAbsent {"IndexID":7,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":4,"TableID":106} @@ -174,13 +174,13 @@ Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106, IndexID: 7} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 106 (test), IndexID: 7} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} └── 7 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":106} ├── MakeIndexAbsent {"IndexID":4,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_1_of_7 index ed4afb8f2997..48cceeeec256 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_1_of_7 @@ -12,18 +12,18 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} ├── 9 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} └── 14 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":4,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_2_of_7 index 5e7279b20509..c7dde34ce58c 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_2_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":4,"TableID":106} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} ├── MakeIndexAbsent {"IndexID":5,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_3_of_7 index cc7e5787d1eb..de80504edd57 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_3_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":4,"TableID":106} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} ├── MakeIndexAbsent {"IndexID":5,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_4_of_7 index fb6e137f61d7..a2793394b149 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_4_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":4,"TableID":106} @@ -39,9 +39,9 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} ├── MakeIndexAbsent {"IndexID":5,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_5_of_7 index 54505655e165..89d62b3e9bc3 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_5_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":5,"TableID":106} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":4,"TableID":106} ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_6_of_7 index 8d2b227c1efa..9f7cc5c12368 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_6_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":5,"TableID":106} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":4,"TableID":106} ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_7_of_7 index 7ead9fb4ed42..7c923ef6635f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_unique_index.rollback_7_of_7 @@ -12,17 +12,17 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 3} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ └── 13 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"pi","TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":4,"TableID":106} @@ -39,10 +39,10 @@ Schema change plan for rolling back ALTER TABLE ‹t›.public.‹test› DROP C │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 5} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 106 (test), IndexID: 5} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":4,"TableID":106} ├── CreateGCJobForIndex {"IndexID":4,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index index 3021b6f1b9c5..9f029625e52b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index @@ -8,16 +8,16 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 7 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":3,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":4}} @@ -29,30 +29,30 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 11 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":3,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":4}} @@ -68,64 +68,64 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ └── 13 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} @@ -142,12 +142,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -158,13 +158,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_1_of_7 index cdffc34eb2d3..c79fed2e9b00 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_1_of_7 @@ -9,15 +9,15 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} ├── 5 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} └── 12 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_2_of_7 index 23247688da06..03ef5c2905be 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_2_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_3_of_7 index 8308a77e928b..4f55097eae7c 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_3_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_4_of_7 index 15ee50d7f778..b66b92936d6f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_4_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_5_of_7 index eccfbff56dc9..1fbb57c39e31 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_5_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_6_of_7 index 64e1df7c1a71..e18dbadadc72 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_6_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_7_of_7 index 029d3d0fc8e8..69c755b6b3c8 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_index.rollback_7_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index index a459005e7fd2..9acdcc3681f4 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index @@ -8,16 +8,16 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 7 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":3,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":4}} @@ -29,30 +29,30 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 11 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakeAbsentIndexBackfilling {"Index":{"ConstraintID":2,"IndexID":3,"IsUnique":true,"SourceIndexID":1,"TableID":104,"TemporaryIndexID":4}} @@ -68,64 +68,64 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ └── 14 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":104} @@ -143,12 +143,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -159,13 +159,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_1_of_7 index 454159d8d89f..54215de477c2 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_1_of_7 @@ -9,15 +9,15 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} ├── 5 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} └── 12 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_2_of_7 index 997198d2628c..4b7fdbc9f144 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_2_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_3_of_7 index 502895acf996..639164869963 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_3_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_4_of_7 index 54d143c610da..05c8193fe71c 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_4_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,9 +31,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_5_of_7 index d941417830d8..412e45f7e016 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_5_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_6_of_7 index 94eb7d9e2c7e..551c3b6a7edd 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_6_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_7_of_7 index cff441ade0a5..2e73f3bb971f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_partial_index.rollback_7_of_7 @@ -9,14 +9,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ └── 11 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"j","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -31,10 +31,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default index dbbb88da2d71..8ae8d7abc7d2 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default @@ -9,15 +9,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ └── 6 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":105} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":105} @@ -28,28 +28,28 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ ├── 2 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b-)} + │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105, IndexID: 2} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ └── 11 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":105} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":105} @@ -65,8 +65,8 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105, IndexID: 3} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 105 (t), IndexID: 3} │ │ └── 4 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":3,"TableID":105} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -74,12 +74,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":2,"SourceIndexID":1,"TableID":105} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":2,"TableID":105} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -87,7 +87,7 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":2,"TableID":105} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -95,12 +95,12 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":2,"TableID":105,"TemporaryIndexID":3} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 4 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":2,"TableID":105} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} @@ -108,21 +108,21 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":2,"TableID":105} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 105, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 10 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":105} │ ├── MakePublicPrimaryIndexWriteOnly {"IndexID":1,"TableID":105} @@ -136,11 +136,11 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} - │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} + │ │ └── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ └── 7 Mutation operations │ ├── MakeIndexAbsent {"IndexID":3,"TableID":105} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":1,"TableID":105} @@ -151,13 +151,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 105, IndexID: 3} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 105 (t), IndexID: 3} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 105, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 1} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 105 (t), ColumnID: 2 (b-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 1 (t_pkey-)} └── 9 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":2,"TableID":105} ├── RemoveTableColumnBackReferencesInFunctions {"BackReferencedColumnID":2,"BackReferencedTableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_1_of_7 index 2320c51da366..9acd6a1c3f28 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_1_of_7 @@ -10,14 +10,14 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} ├── 5 elements transitioning toward ABSENT - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} └── 11 Mutation operations ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_2_of_7 index d46bba335fbb..a9ef145be744 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_2_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":105} @@ -30,9 +30,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} ├── MakeIndexAbsent {"IndexID":3,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_3_of_7 index fd531b30bcd7..647ec5f23994 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_3_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":105} @@ -30,9 +30,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} ├── MakeIndexAbsent {"IndexID":3,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_4_of_7 index 0be6fa2c0a50..3ddaef994018 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_4_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── RemoveColumnFromIndex {"ColumnID":1,"IndexID":2,"TableID":105} @@ -30,9 +30,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 6 Mutation operations ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} ├── MakeIndexAbsent {"IndexID":3,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_5_of_7 index 71d7ddfa325c..c9073d873e43 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_5_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":105} @@ -30,10 +30,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_6_of_7 index 9c48e5acbdf1..1ec4ef5ec8ec 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_6_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":3,"TableID":105} @@ -30,10 +30,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_7_of_7 index 9ebdbc99e915..98e6c52e566e 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_column_with_udf_default.rollback_7_of_7 @@ -10,13 +10,13 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ └── 10 Mutation operations │ ├── SetColumnName {"ColumnID":2,"Name":"b","TableID":105} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":105} @@ -30,10 +30,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} - │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 3} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} + │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (t), IndexID: 3} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_function b/pkg/sql/schemachanger/testdata/explain/drop_function index 821c94ecf8a4..15723babc8cc 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_function +++ b/pkg/sql/schemachanger/testdata/explain/drop_function @@ -25,16 +25,16 @@ Schema change plan for DROP FUNCTION ‹""›.‹""›.‹f›; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 10 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 109} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109, Name: root} - │ │ ├── PUBLIC → DROPPED Function:{DescID: 109} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 109, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionLeakProof:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionNullInputBehavior:{DescID: 109} - │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 109} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109 (f-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109 (f-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Function:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionLeakProof:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionNullInputBehavior:{DescID: 109 (f-)} + │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 109 (f-)} │ └── 11 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":109} │ ├── RemoveObjectParent {"ObjectID":109,"ParentSchemaID":101} @@ -50,30 +50,30 @@ Schema change plan for DROP FUNCTION ‹""›.‹""›.‹f›; ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 10 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 109} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 109, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 109, Name: root} - │ │ │ ├── DROPPED → PUBLIC Function:{DescID: 109} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 109, ReferencedDescID: 101} - │ │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 109} - │ │ │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 109} - │ │ │ ├── ABSENT → PUBLIC FunctionLeakProof:{DescID: 109} - │ │ │ ├── ABSENT → PUBLIC FunctionNullInputBehavior:{DescID: 109} - │ │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 109} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 109 (f-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 109 (f-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 109 (f-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Function:{DescID: 109 (f-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} + │ │ │ ├── ABSENT → PUBLIC FunctionName:{DescID: 109 (f-)} + │ │ │ ├── ABSENT → PUBLIC FunctionVolatility:{DescID: 109 (f-)} + │ │ │ ├── ABSENT → PUBLIC FunctionLeakProof:{DescID: 109 (f-)} + │ │ │ ├── ABSENT → PUBLIC FunctionNullInputBehavior:{DescID: 109 (f-)} + │ │ │ └── ABSENT → PUBLIC FunctionBody:{DescID: 109 (f-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 10 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 109} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109, Name: root} - │ │ ├── PUBLIC → DROPPED Function:{DescID: 109} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 109, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionLeakProof:{DescID: 109} - │ │ ├── PUBLIC → ABSENT FunctionNullInputBehavior:{DescID: 109} - │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 109} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109 (f-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 109 (f-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Function:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT FunctionName:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionVolatility:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionLeakProof:{DescID: 109 (f-)} + │ │ ├── PUBLIC → ABSENT FunctionNullInputBehavior:{DescID: 109 (f-)} + │ │ └── PUBLIC → ABSENT FunctionBody:{DescID: 109 (f-)} │ └── 18 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":109} │ ├── RemoveObjectParent {"ObjectID":109,"ParentSchemaID":101} @@ -96,7 +96,7 @@ Schema change plan for DROP FUNCTION ‹""›.‹""›.‹f›; └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── DROPPED → ABSENT Function:{DescID: 109} + │ └── DROPPED → ABSENT Function:{DescID: 109 (f-)} └── 8 Mutation operations ├── DeleteDescriptor {"DescriptorID":109} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_index_hash_sharded_index b/pkg/sql/schemachanger/testdata/explain/drop_index_hash_sharded_index index ba81baee5d40..187e174b495a 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_index_hash_sharded_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_index_hash_sharded_index @@ -12,12 +12,12 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ └── 6 Mutation operations │ ├── MakePublicColumnNotNullValidated {"ColumnID":3,"TableID":104} │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -28,22 +28,22 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 6 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} - │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} + │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ │ ├── VALIDATED → PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} + │ │ │ └── ABSENT → PUBLIC ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} - │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} + │ │ └── PUBLIC → ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ └── 8 Mutation operations │ ├── MakePublicColumnNotNullValidated {"ColumnID":3,"TableID":104} │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -56,14 +56,14 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 8 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} - │ │ └── VALIDATED → ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ │ ├── VALIDATED → ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} + │ │ └── VALIDATED → ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ └── 10 Mutation operations │ ├── RemoveColumnNotNull {"ColumnID":3,"TableID":104} │ ├── RemoveCheckConstraint {"ConstraintID":2,"TableID":104} @@ -77,10 +77,10 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_16-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_index_partial_expression_index b/pkg/sql/schemachanger/testdata/explain/drop_index_partial_expression_index index f55d2b63f0c2..19fd5cd09a60 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_index_partial_expression_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_index_partial_expression_index @@ -9,9 +9,9 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ └── 3 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakePublicColumnWriteOnly {"ColumnID":3,"TableID":104} @@ -19,16 +19,16 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ └── 5 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── MakePublicColumnWriteOnly {"ColumnID":3,"TableID":104} @@ -38,11 +38,11 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 5 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ └── 8 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":3,"TableID":104} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} @@ -54,10 +54,10 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} └── 5 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_index_vanilla_index b/pkg/sql/schemachanger/testdata/explain/drop_index_vanilla_index index df9f9c80bb04..24adaea6cbae 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_index_vanilla_index +++ b/pkg/sql/schemachanger/testdata/explain/drop_index_vanilla_index @@ -9,18 +9,18 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 1 element transitioning toward ABSENT - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ └── 1 Mutation operation │ └── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 1 element transitioning toward ABSENT - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 1 element transitioning toward ABSENT - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ └── 3 Mutation operations │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} │ ├── SetJobStateOnDescriptor {"DescriptorID":104,"Initialize":true} @@ -28,10 +28,10 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ └── 6 Mutation operations │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":104} │ ├── SetIndexName {"IndexID":2,"Name":"crdb_internal_in...","TableID":104} @@ -41,8 +41,8 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} └── 4 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":104} ├── CreateGCJobForIndex {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_index_with_materialized_view_dep b/pkg/sql/schemachanger/testdata/explain/drop_index_with_materialized_view_dep index c08ddba3ba41..539249d87136 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_index_with_materialized_view_dep +++ b/pkg/sql/schemachanger/testdata/explain/drop_index_with_materialized_view_dep @@ -11,30 +11,30 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 24 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED View:{DescID: 106} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (v3-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "root"} + │ │ ├── PUBLIC → DROPPED View:{DescID: 106 (v3-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ └── 21 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveBackReferencesInRelations {"BackReferencedID":106} @@ -60,60 +60,60 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 24 elements transitioning toward ABSENT - │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: root} - │ │ │ ├── DROPPED → PUBLIC View:{DescID: 106} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 106, ReferencedDescID: 101} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} - │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} + │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106 (v3-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (v3-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (v3-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC View:{DescID: 106 (v3-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} + │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 26 elements transitioning toward ABSENT - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED View:{DescID: 106} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 106, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 106, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 106, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (v3-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "root"} + │ │ ├── PUBLIC → DROPPED View:{DescID: 106 (v3-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 1 (v3_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 1 (j-), IndexID: 1 (v3_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ └── 37 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveBackReferencesInRelations {"BackReferencedID":106} @@ -155,13 +155,13 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 3, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 105, Name: idx, IndexID: 2} - │ │ ├── DROPPED → ABSENT View:{DescID: 106} - │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 106, IndexID: 1} - │ │ └── PUBLIC → ABSENT TableData:{DescID: 106, ReferencedDescID: 100} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (v2), ColumnID: 2 (j), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (v2), ColumnID: 3 (rowid), IndexID: 2 (idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 105 (v2), Name: "idx", IndexID: 2 (idx-)} + │ │ ├── DROPPED → ABSENT View:{DescID: 106 (v3-)} + │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-)} + │ │ └── PUBLIC → ABSENT TableData:{DescID: 106 (v3-), ReferencedDescID: 100 (defaultdb)} │ └── 8 Mutation operations │ ├── CreateGCJobForTable {"DatabaseID":100,"TableID":106} │ ├── MakeWriteOnlyIndexDeleteOnly {"IndexID":2,"TableID":105} @@ -173,8 +173,8 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 2 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} - │ └── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 105 (v2), IndexID: 2 (idx-)} └── 4 Mutation operations ├── MakeIndexAbsent {"IndexID":2,"TableID":105} ├── CreateGCJobForIndex {"IndexID":2,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_1_of_7 index 12ee82241160..e8cc6d8c8d04 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_1_of_7 @@ -10,19 +10,19 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 7 elements transitioning toward PUBLIC - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} ├── 5 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 18 Mutation operations ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_2_of_7 index fd075c328d9e..32bd9cfb5916 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_2_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,9 +42,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_3_of_7 index 8f53d3e5e6c3..296842932a0d 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_3_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,9 +42,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_4_of_7 index b929ff16f435..91c4c2c6c462 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_4_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,9 +42,9 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 5 Mutation operations ├── CreateGCJobForIndex {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_5_of_7 index 99341cd1d74c..e3c9828ef89b 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_5_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,10 +42,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_6_of_7 index 5e61648cbc58..13ecfada105c 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_6_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── MERGE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,10 +42,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_7_of_7 index bb2cde0e9593..f0fcfbcc90f3 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.rollback_7_of_7 @@ -10,18 +10,18 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D └── PostCommitNonRevertiblePhase ├── Stage 1 of 2 in PostCommitNonRevertiblePhase │ ├── 7 elements transitioning toward PUBLIC - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} + │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} + │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} + │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} + │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ├── 4 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ ├── WRITE_ONLY → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ │ └── WRITE_ONLY → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ └── 17 Mutation operations │ ├── SetColumnName {"ColumnID":3,"Name":"k","TableID":104} │ ├── MakeValidatedSecondaryIndexPublic {"IndexID":2,"TableID":104} @@ -42,10 +42,10 @@ Schema change plan for rolling back ALTER TABLE ‹defaultdb›.public.‹t› D │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 2 of 2 in PostCommitNonRevertiblePhase ├── 4 elements transitioning toward ABSENT - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 4} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} + │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} └── 6 Mutation operations ├── MakeIndexAbsent {"IndexID":3,"TableID":104} ├── MakeIndexAbsent {"IndexID":4,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_1_of_2 index c5205f2ae889..558e6bbf5c4a 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_1_of_2 @@ -8,20 +8,20 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 11 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -37,38 +37,38 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 4 elements transitioning toward PUBLIC - │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} + │ │ │ ├── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ │ └── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ ├── 5 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ └── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 4 elements transitioning toward PUBLIC - │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} - │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} + │ │ ├── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 5 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} - │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ └── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 15 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── SetColumnName {"ColumnID":2,"Name":"crdb_internal_co...","TableID":104} @@ -88,67 +88,67 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} + │ │ │ ├── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ │ └── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 3 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} + │ │ └── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ ├── 9 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ └── 16 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4,"TableID":104} @@ -168,15 +168,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 9 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -189,13 +189,13 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4} ├── 5 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} └── 7 Mutation operations ├── MakeIndexAbsent {"IndexID":1,"TableID":104} ├── CreateGCJobForIndex {"IndexID":1,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_2_of_2 index b8a5a712dad9..87806efcc3ed 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain/drop_multiple_columns_separate_statements.statement_2_of_2 @@ -9,46 +9,46 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 2 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} │ └── 2 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":3,"TableID":104} │ └── SetColumnName {"ColumnID":3,"Name":"crdb_internal_co...","TableID":104} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 3 elements transitioning toward PUBLIC - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 3} - │ │ │ └── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} + │ │ │ └── BACKFILL_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ │ └── DELETE_ONLY → ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ ├── 7 elements transitioning toward ABSENT - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104, ColumnID: 4} - │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ │ ├── VALIDATED → PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ │ └── ABSENT → PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 3 elements transitioning toward PUBLIC - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} - │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 3} - │ │ └── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} + │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} + │ │ └── ABSENT → BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── ABSENT → PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ └── ABSENT → DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: k, ColumnID: 3} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} - │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} + │ │ └── PUBLIC → ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ └── 15 Mutation operations │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":104} │ ├── MakePublicSecondaryIndexWriteOnly {"IndexID":2,"TableID":104} @@ -68,67 +68,67 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL ├── PostCommitPhase │ ├── Stage 1 of 7 in PostCommitPhase │ │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104, IndexID: 4} - │ │ │ └── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── ABSENT → PUBLIC IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ │ └── DELETE_ONLY → WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeDeleteOnlyIndexWriteOnly {"IndexID":4,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 2 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILL_ONLY → BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── BackfillIndex {"IndexID":3,"SourceIndexID":1,"TableID":104} │ ├── Stage 3 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── BACKFILLED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfillingIndexDeleteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 4 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── DELETE_ONLY → MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeBackfilledIndexMerging {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ ├── Stage 5 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGE_ONLY → MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 1 Backfill operation │ │ └── MergeIndex {"BackfilledIndexID":3,"TableID":104,"TemporaryIndexID":4} │ ├── Stage 6 of 7 in PostCommitPhase │ │ ├── 1 element transitioning toward PUBLIC - │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── MERGED → WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ └── 3 Mutation operations │ │ ├── MakeMergedIndexWriteOnly {"IndexID":3,"TableID":104} │ │ ├── SetJobStateOnDescriptor {"DescriptorID":104} │ │ └── UpdateSchemaChangerJob {"RunningStatus":"PostCommitPhase ..."} │ └── Stage 7 of 7 in PostCommitPhase │ ├── 1 element transitioning toward PUBLIC - │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── WRITE_ONLY → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ └── 1 Validation operation │ └── ValidateIndex {"IndexID":3,"TableID":104} └── PostCommitNonRevertiblePhase ├── Stage 1 of 3 in PostCommitNonRevertiblePhase │ ├── 2 elements transitioning toward PUBLIC - │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} - │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} + │ │ └── ABSENT → PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ ├── 2 elements transitioning toward TRANSIENT_ABSENT - │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} - │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── PUBLIC → TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} + │ │ └── WRITE_ONLY → TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 10 elements transitioning toward ABSENT - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 3} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 2} - │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} - │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ │ ├── WRITE_ONLY → DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ ├── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} + │ │ ├── VALIDATED → DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ └── 16 Mutation operations │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":3,"TableID":104} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":104} @@ -148,15 +148,15 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} ├── Stage 2 of 3 in PostCommitNonRevertiblePhase │ ├── 1 element transitioning toward TRANSIENT_ABSENT - │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ ├── 7 elements transitioning toward ABSENT - │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} - │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 1 (t_pkey-)} + │ │ ├── VALIDATED → DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── DELETE_ONLY → ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ └── 9 Mutation operations │ ├── MakeIndexAbsent {"IndexID":2,"TableID":104} │ ├── MakeIndexAbsent {"IndexID":4,"TableID":104} @@ -169,17 +169,17 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COL │ └── UpdateSchemaChangerJob {"IsNonCancelable":true,"RunningStatus":"PostCommitNonRev..."} └── Stage 3 of 3 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward TRANSIENT_ABSENT - │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104, IndexID: 4} + │ └── PUBLIC → TRANSIENT_ABSENT IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} ├── 9 elements transitioning toward ABSENT - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 3} - │ ├── PUBLIC → ABSENT ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} - │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104, ColumnID: 2} - │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} - │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 1} - │ └── PUBLIC → ABSENT IndexData:{DescID: 104, IndexID: 2} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 3 (k-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k-)} + │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k-)} + │ ├── PUBLIC → ABSENT ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k-)} + │ ├── DELETE_ONLY → ABSENT Column:{DescID: 104 (t), ColumnID: 2 (j-)} + │ ├── PUBLIC → ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} + │ ├── DELETE_ONLY → ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} └── 10 Mutation operations ├── RemoveColumnDefaultExpression {"ColumnID":3,"TableID":104} ├── RemoveColumnOnUpdateExpression {"ColumnID":3,"TableID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_schema b/pkg/sql/schemachanger/testdata/explain/drop_schema index abc99fe9a795..3bc1d195890f 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_schema +++ b/pkg/sql/schemachanger/testdata/explain/drop_schema @@ -9,12 +9,12 @@ Schema change plan for DROP SCHEMA ‹db›.‹sc›; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED Schema:{DescID: 106} - │ │ └── PUBLIC → ABSENT SchemaParent:{DescID: 106, ReferencedDescID: 104} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (sc-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Schema:{DescID: 106 (sc-)} + │ │ └── PUBLIC → ABSENT SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ └── 6 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveSchemaParent {"Parent":{"ParentDatabaseID":104,"SchemaID":106}} @@ -25,22 +25,22 @@ Schema change plan for DROP SCHEMA ‹db›.‹sc›; ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 6 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106, Name: root} - │ │ │ ├── DROPPED → PUBLIC Schema:{DescID: 106} - │ │ │ └── ABSENT → PUBLIC SchemaParent:{DescID: 106, ReferencedDescID: 104} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 106 (sc-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (sc-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 106 (sc-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Schema:{DescID: 106 (sc-)} + │ │ │ └── ABSENT → PUBLIC SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 6 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106, Name: root} - │ │ ├── PUBLIC → DROPPED Schema:{DescID: 106} - │ │ └── PUBLIC → ABSENT SchemaParent:{DescID: 106, ReferencedDescID: 104} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 106 (sc-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Schema:{DescID: 106 (sc-)} + │ │ └── PUBLIC → ABSENT SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ └── 9 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveSchemaParent {"Parent":{"ParentDatabaseID":104,"SchemaID":106}} @@ -54,7 +54,7 @@ Schema change plan for DROP SCHEMA ‹db›.‹sc›; └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 1 element transitioning toward ABSENT - │ └── DROPPED → ABSENT Schema:{DescID: 106} + │ └── DROPPED → ABSENT Schema:{DescID: 106 (sc-)} └── 4 Mutation operations ├── DeleteDescriptor {"DescriptorID":106} ├── RemoveJobStateFromDescriptor {"DescriptorID":104} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_table b/pkg/sql/schemachanger/testdata/explain/drop_table index bfdaa0586009..b487865e0bea 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_table +++ b/pkg/sql/schemachanger/testdata/explain/drop_table @@ -12,33 +12,33 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 27 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 107} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT TableComment:{DescID: 107, Comment: t has a comment} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: k, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: v, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (t-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 107 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} + │ │ ├── PUBLIC → ABSENT TableComment:{DescID: 107 (t-), Comment: "t has a comment"} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 22 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":107} │ ├── RemoveObjectParent {"ObjectID":107,"ParentSchemaID":106} @@ -65,67 +65,67 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 27 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 107} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107, Name: root} - │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 107} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 107, ReferencedDescID: 106} - │ │ │ ├── ABSENT → PUBLIC TableComment:{DescID: 107, Comment: t has a comment} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107, Name: k, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107, Name: v, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} - │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 107, ColumnID: 3} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 107 (t-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107 (t-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 107 (t-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 107 (t-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} + │ │ │ ├── ABSENT → PUBLIC TableComment:{DescID: 107 (t-), Comment: "t has a comment"} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107 (t-), ColumnID: 1 (k-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107 (t-), ColumnID: 2 (v-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} + │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 30 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 107} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 106} - │ │ ├── PUBLIC → ABSENT TableComment:{DescID: 107, Comment: t has a comment} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 107, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: k, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 107, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: v, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 107, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 107, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 107, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107, ColumnID: 3, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 107 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 107 (t-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 107 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} + │ │ ├── PUBLIC → ABSENT TableComment:{DescID: 107 (t-), Comment: "t has a comment"} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 107 (t-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 107 (t-), ColumnID: 2 (v-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 1 (k-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 2 (v-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 40 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":107} │ ├── RemoveObjectParent {"ObjectID":107,"ParentSchemaID":106} @@ -170,9 +170,9 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Table:{DescID: 107} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 107, IndexID: 1} - │ └── PUBLIC → ABSENT TableData:{DescID: 107, ReferencedDescID: 104} + │ ├── DROPPED → ABSENT Table:{DescID: 107 (t-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 107 (t-), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT TableData:{DescID: 107 (t-), ReferencedDescID: 104 (db)} └── 4 Mutation operations ├── CreateGCJobForTable {"DatabaseID":104,"TableID":107} ├── CreateGCJobForIndex {"IndexID":1,"TableID":107} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default b/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default index 0b93e4b9d214..fa492365d230 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default +++ b/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default @@ -9,29 +9,29 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; ├── StatementPhase │ └── Stage 1 of 1 in StatementPhase │ ├── 23 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: i, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} + │ │ ├── PUBLIC → VALIDATED ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → VALIDATED PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 20 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":105} │ ├── RemoveObjectParent {"ObjectID":105,"ParentSchemaID":101} @@ -56,58 +56,58 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 23 elements transitioning toward ABSENT - │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} - │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: admin} - │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105, Name: root} - │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 105} - │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: i, ColumnID: 1} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} - │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} - │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} - │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} - │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ │ ├── ABSENT → PUBLIC Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} + │ │ │ ├── ABSENT → PUBLIC Owner:{DescID: 105 (t-)} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ │ ├── ABSENT → PUBLIC UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ │ ├── DROPPED → PUBLIC Table:{DescID: 105 (t-)} + │ │ │ ├── ABSENT → PUBLIC SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} + │ │ │ ├── ABSENT → PUBLIC ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t-), ColumnID: 1 (i-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} + │ │ │ ├── VALIDATED → PUBLIC ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t-), ColumnID: 2 (b-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} + │ │ │ ├── ABSENT → PUBLIC ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ │ ├── WRITE_ONLY → PUBLIC Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── ABSENT → PUBLIC ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ │ ├── VALIDATED → PUBLIC PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ │ └── ABSENT → PUBLIC IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ └── 1 Mutation operation │ │ └── UndoAllInTxnImmediateMutationOpSideEffects │ └── Stage 2 of 2 in PreCommitPhase │ ├── 25 elements transitioning toward ABSENT - │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} - │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: admin} - │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105, Name: root} - │ │ ├── PUBLIC → DROPPED Table:{DescID: 105} - │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} - │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 105, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: i, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} - │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 105, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} - │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 105, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} - │ │ ├── PUBLIC → ABSENT Column:{DescID: 105, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} - │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} - │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} - │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ ├── PUBLIC → ABSENT Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} + │ │ ├── PUBLIC → ABSENT Owner:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} + │ │ ├── PUBLIC → ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} + │ │ ├── PUBLIC → DROPPED Table:{DescID: 105 (t-)} + │ │ ├── PUBLIC → ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} + │ │ ├── PUBLIC → ABSENT ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 105 (t-), ColumnID: 1 (i-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} + │ │ ├── PUBLIC → ABSENT ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 105 (t-), ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} + │ │ ├── PUBLIC → ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} + │ │ ├── PUBLIC → ABSENT Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} + │ │ ├── PUBLIC → ABSENT PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} + │ │ └── PUBLIC → ABSENT IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ └── 36 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":105} │ ├── RemoveObjectParent {"ObjectID":105,"ParentSchemaID":101} @@ -148,9 +148,9 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; └── PostCommitNonRevertiblePhase └── Stage 1 of 1 in PostCommitNonRevertiblePhase ├── 3 elements transitioning toward ABSENT - │ ├── DROPPED → ABSENT Table:{DescID: 105} - │ ├── PUBLIC → ABSENT IndexData:{DescID: 105, IndexID: 1} - │ └── PUBLIC → ABSENT TableData:{DescID: 105, ReferencedDescID: 100} + │ ├── DROPPED → ABSENT Table:{DescID: 105 (t-)} + │ ├── PUBLIC → ABSENT IndexData:{DescID: 105 (t-), IndexID: 1 (t_pkey-)} + │ └── PUBLIC → ABSENT TableData:{DescID: 105 (t-), ReferencedDescID: 100 (defaultdb)} └── 5 Mutation operations ├── CreateGCJobForTable {"DatabaseID":100,"TableID":105} ├── CreateGCJobForIndex {"IndexID":1,"TableID":105} diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column b/pkg/sql/schemachanger/testdata/explain_shape/add_column new file mode 100644 index 000000000000..49da829c766d --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column @@ -0,0 +1,22 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY, k INT); +CREATE SEQUENCE db.public.sq1; +INSERT INTO db.public.tbl VALUES(-1); +INSERT INTO db.public.tbl VALUES(-2); +INSERT INTO db.public.tbl VALUES(-3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAULT 42; +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT NULL DEFAULT ‹42›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey- in relation tbl + │ └── into tbl_pkey+ (i, k, j+) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[3] into tbl_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_pkey+ in relation tbl + ├── validate NOT NULL constraint on column j+ in index tbl_pkey+ in relation tbl + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_seq b/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_seq new file mode 100644 index 000000000000..449634fbc797 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_seq @@ -0,0 +1,19 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY); +CREATE SEQUENCE db.public.sq1; + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAULT nextval('db.public.sq1'); +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹l› INT8 NOT NULL DEFAULT nextval(‹'db.public.sq1'›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey- in relation tbl + │ └── into tbl_pkey+ (i, l+) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[3] into tbl_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_pkey+ in relation tbl + ├── validate NOT NULL constraint on column l+ in index tbl_pkey+ in relation tbl + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_unique b/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_unique new file mode 100644 index 000000000000..5217deda8af5 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column_default_unique @@ -0,0 +1,25 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT CAST(date_part('year', now()) AS INT); +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 UNIQUE DEFAULT CAST(date_part(‹'year'›, now()) AS INT8); + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey- in relation tbl + │ └── into tbl_pkey+ (i, j+) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[3] into tbl_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_pkey+ in relation tbl + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey+ in relation tbl + │ └── into tbl_j_key+ (j+, i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[5] into tbl_j_key+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_j_key+ in relation tbl + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column_no_default b/pkg/sql/schemachanger/testdata/explain_shape/add_column_no_default new file mode 100644 index 000000000000..cd345f8834b1 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column_no_default @@ -0,0 +1,9 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN j INT; +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8; + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored b/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored new file mode 100644 index 000000000000..4840f468be82 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored @@ -0,0 +1,20 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY, k INT); +CREATE SEQUENCE db.public.sq1; +INSERT INTO db.public.tbl VALUES (-1, -1),(-2, -2),(-3, -3), (-7, -7); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k) STORED; +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT NULL AS (‹k›) STORED; + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey- in relation tbl + │ └── into tbl_pkey+ (i, k, j+) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[3] into tbl_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_pkey+ in relation tbl + ├── validate NOT NULL constraint on column j+ in index tbl_pkey+ in relation tbl + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored_family b/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored_family new file mode 100644 index 000000000000..de0f3bae14c5 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/add_column_with_stored_family @@ -0,0 +1,20 @@ +/* setup */ +CREATE DATABASE db; +CREATE TABLE db.public.tbl (i INT PRIMARY KEY, k INT); +CREATE SEQUENCE db.public.sq1; +INSERT INTO db.public.tbl VALUES (-1, -1),(-2, -2),(-3, -3), (-7, -7); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k) STORED CREATE FAMILY bob; +---- +Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN ‹j› INT8 NOT NULL AS (‹k›) STORED CREATE FAMILY ‹bob›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index tbl_pkey- in relation tbl + │ └── into tbl_pkey+ (i, k, j+) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation tbl + │ └── from tbl@[3] into tbl_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index tbl_pkey+ in relation tbl + ├── validate NOT NULL constraint on column j+ in index tbl_pkey+ in relation tbl + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_udf b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_udf new file mode 100644 index 000000000000..9b2c4cfa89dd --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_udf @@ -0,0 +1,11 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, b INT); +CREATE FUNCTION f(b INT) RETURNS INT LANGUAGE SQL AS $$ SELECT b + 1 $$; + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹check_b› CHECK (f(‹b›) > ‹1›); + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint check_b+ in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_unvalidated b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_unvalidated new file mode 100644 index 000000000000..bc424ce059d2 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_unvalidated @@ -0,0 +1,9 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY); +INSERT INTO t VALUES (0); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ADD CHECK (i > 0) NOT VALID; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK (‹i› > ‹0›) NOT VALID; + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_vanilla b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_vanilla new file mode 100644 index 000000000000..3e6db544fdef --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_vanilla @@ -0,0 +1,12 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY); +INSERT INTO t(i) VALUES (1), (2), (3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ADD CHECK (i > 0) +---; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK (‹i› > ‹0›); + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint check_i+ in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_with_seq_and_udt b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_with_seq_and_udt new file mode 100644 index 000000000000..d41a01beaa2b --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_check_with_seq_and_udt @@ -0,0 +1,12 @@ +/* setup */ +CREATE SEQUENCE s; +CREATE TYPE typ AS ENUM ('a', 'b'); +CREATE TABLE t (i INT PRIMARY KEY, j STRING); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a'); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CHECK ((‹i› > nextval(‹'s'›)) OR (‹j›::‹typ› = ‹'a'›)); + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint check_i_j+ in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_foreign_key b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_foreign_key new file mode 100644 index 000000000000..f800050ca010 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_foreign_key @@ -0,0 +1,13 @@ +/* setup */ +CREATE TABLE t1 (i INT PRIMARY KEY); +CREATE TABLE t2 (i INT PRIMARY KEY); +INSERT INTO t2 (i) VALUES(-1), (-2), (-3); +INSERT INTO t1 (i) VALUES(-1), (-2), (-3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› ADD CONSTRAINT ‹t1_i_fkey› FOREIGN KEY (‹i›) REFERENCES ‹defaultdb›.‹public›.‹t2› (‹i›); + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint t1_i_fkey+ in relation t1 + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_primary_key_drop_rowid new file mode 100644 index 000000000000..2ca59e03ac12 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_primary_key_drop_rowid @@ -0,0 +1,24 @@ +/* setup */ +CREATE TABLE t (a INT NOT NULL); + +/* test */ +EXPLAIN (ddl, shape) alter table t add primary key (a); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD PRIMARY KEY (‹a›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey~ (a, rowid-) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into t_pkey~ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey~ in relation t + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey~ in relation t + │ └── into t_pkey+ (a) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[5] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 4 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_unique_without_index b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_unique_without_index new file mode 100644 index 000000000000..cae20c45b306 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_add_unique_without_index @@ -0,0 +1,12 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT); +SET experimental_enable_unique_without_index_constraints = true; +INSERT INTO t(i, j) VALUES(-1, -1), (-2, -2), (-3, -3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD CONSTRAINT ‹unique_j› UNIQUE WITHOUT INDEX (‹j›); + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint unique_j+ in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_column_set_not_null b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_column_set_not_null new file mode 100644 index 000000000000..6427dff98e7d --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_column_set_not_null @@ -0,0 +1,10 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ALTER COLUMN j SET NOT NULL; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER COLUMN ‹j› SET NOT NULL; + ├── execute 1 system table mutations transaction + ├── validate NOT NULL constraint on column j in index t@[0] in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_drop_rowid new file mode 100644 index 000000000000..d5c9fefb3d6f --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_drop_rowid @@ -0,0 +1,24 @@ +/* setup */ +CREATE TABLE t (a INT NOT NULL); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY USING COLUMNS (‹a›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey~ (a, rowid-) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into t_pkey~ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey~ in relation t + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey~ in relation t + │ └── into t_pkey+ (a) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[5] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 4 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_using_hash b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_using_hash new file mode 100644 index 000000000000..0d121d4bde76 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_using_hash @@ -0,0 +1,21 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT NOT NULL); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING HASH WITH (bucket_count=3); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY USING COLUMNS (‹j›) USING HASH WITH (‹bucket_count› = ‹3›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ ├── into t_pkey+ (crdb_internal_j_shard_3+, j, i) + │ └── into t_i_key+ (i, crdb_internal_j_shard_3+, j) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ ├── from t@[3] into t_pkey+ + │ └── from t@[5] into t_i_key+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + ├── validate UNIQUE constraint backed by index t_i_key+ in relation t + ├── validate NOT NULL constraint on column crdb_internal_j_shard_3+ in index t_pkey+ in relation t + ├── validate non-index-backed constraint check_crdb_internal_j_shard_3+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_vanilla b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_vanilla new file mode 100644 index 000000000000..028b2af53c99 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_alter_primary_key_vanilla @@ -0,0 +1,20 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT NOT NULL); +INSERT INTO t(i, j) VALUES (-4, -4), (-2, -2), (-3, -3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ALTER PRIMARY KEY USING COLUMNS (‹j›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ ├── into t_pkey+ (j, i) + │ └── into t_i_key+ (i, j) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ ├── from t@[3] into t_pkey+ + │ └── from t@[5] into t_i_key+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + ├── validate UNIQUE constraint backed by index t_i_key+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_check b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_check new file mode 100644 index 000000000000..9201c4a68f0d --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_check @@ -0,0 +1,8 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY CHECK (i > 0)); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP CONSTRAINT check_i; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹check_i›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_fk b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_fk new file mode 100644 index 000000000000..25be8a04dd25 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_fk @@ -0,0 +1,9 @@ +/* setup */ +CREATE TABLE t2 (i INT PRIMARY KEY); +CREATE TABLE t1 (i INT PRIMARY KEY REFERENCES t2(i)); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t1 DROP CONSTRAINT t1_i_fkey; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t1› DROP CONSTRAINT ‹t1_i_fkey›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_uwi b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_uwi new file mode 100644 index 000000000000..b6b6821b2584 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_drop_constraint_uwi @@ -0,0 +1,10 @@ +/* setup */ +SET experimental_enable_unique_without_index_constraints = true; +CREATE TABLE t (i INT PRIMARY KEY, j INT); +ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP CONSTRAINT unique_j; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP CONSTRAINT ‹unique_j›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/alter_table_validate_constraint b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_validate_constraint new file mode 100644 index 000000000000..96e37f5a05aa --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/alter_table_validate_constraint @@ -0,0 +1,11 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY); +ALTER TABLE t ADD CHECK (i > 0) NOT VALID; + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t VALIDATE CONSTRAINT check_i; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› VALIDATE CONSTRAINT ‹check_i›; + ├── execute 1 system table mutations transaction + ├── validate non-index-backed constraint check_i+ in relation t + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/create_function b/pkg/sql/schemachanger/testdata/explain_shape/create_function new file mode 100644 index 000000000000..1a6e2c822112 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/create_function @@ -0,0 +1,28 @@ +/* setup */ +CREATE TABLE t( + a INT PRIMARY KEY, + b INT, + C INT, + INDEX t_idx_b(b), + INDEX t_idx_c(c) +); +CREATE SEQUENCE sq1; +CREATE VIEW v AS SELECT a FROM t; +CREATE TYPE notmyworkday AS ENUM ('Monday', 'Tuesday'); +CREATE TABLE t2(a notmyworkday); + +/* test */ +EXPLAIN (ddl, shape) CREATE FUNCTION f(a notmyworkday) RETURNS INT VOLATILE LANGUAGE SQL AS $$ + SELECT a FROM t; + SELECT b FROM t@t_idx_b; + SELECT c FROM t@t_idx_c; + SELECT a FROM v; + SELECT nextval('sq1'); +$$; +---- +Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹f›(IN ‹a› ‹notmyworkday›) + RETURNS INT8 + VOLATILE + LANGUAGE SQL + AS $$SELECT ‹a› FROM ‹defaultdb›.‹public›.‹t›; SELECT ‹b› FROM ‹defaultdb›.‹public›.‹t›@‹t_idx_b›; SELECT ‹c› FROM ‹defaultdb›.‹public›.‹t›@‹t_idx_c›; SELECT ‹a› FROM ‹defaultdb›.‹public›.‹v›; SELECT nextval(‹'sq1'›);$$; + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_1_of_2 new file mode 100644 index 000000000000..f37d757b8e94 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_1_of_2 @@ -0,0 +1,11 @@ +/* setup */ +CREATE TABLE t (a INT PRIMARY KEY, b INT NOT NULL); + +/* test */ +EXPLAIN (ddl, shape) CREATE FUNCTION t() RETURNS INT LANGUAGE SQL AS $$ SELECT 1 $$; +---- +Schema change plan for CREATE FUNCTION ‹defaultdb›.‹public›.‹t›() + RETURNS INT8 + LANGUAGE SQL + AS $$SELECT ‹1›;$$; + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_2_of_2 new file mode 100644 index 000000000000..ea88b15ca829 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/create_function_in_txn.statement_2_of_2 @@ -0,0 +1,20 @@ +/* setup */ +CREATE TABLE t (a INT PRIMARY KEY, b INT NOT NULL); + +/* test */ +CREATE FUNCTION t() RETURNS INT LANGUAGE SQL AS $$ SELECT 1 $$; +EXPLAIN (ddl, shape) CREATE UNIQUE INDEX idx ON t(b); +---- +Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹public›.‹t› (‹b›); following CREATE FUNCTION ‹defaultdb›.‹public›.‹t›() + RETURNS INT8 + LANGUAGE SQL + AS $$SELECT ‹1›;$$; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey in relation t + │ └── into idx+ (b, a) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into idx+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index idx+ in relation t + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/create_index b/pkg/sql/schemachanger/testdata/explain_shape/create_index new file mode 100644 index 000000000000..e5a58bd1e62a --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/create_index @@ -0,0 +1,17 @@ +/* setup */ +CREATE TYPE e AS ENUM('a', 'b', 'c'); +CREATE TABLE t (k INT PRIMARY KEY, v e NOT NULL); + +/* test */ +EXPLAIN (ddl, shape) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); +---- +Schema change plan for CREATE INDEX ‹idx1› ON ‹defaultdb›.‹public›.‹t› (‹v›) WHERE (‹v› = ‹'a'›); + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey in relation t + │ └── into idx1+ (v, k) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into idx1+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index idx1+ in relation t + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/create_schema b/pkg/sql/schemachanger/testdata/explain_shape/create_schema new file mode 100644 index 000000000000..7a82dfd189d8 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/create_schema @@ -0,0 +1,7 @@ +/* setup */ + +/* test */ +EXPLAIN (ddl, shape) CREATE SCHEMA sc; +---- +Schema change plan for CREATE SCHEMA ‹defaultdb›.‹sc›; + └── execute 1 system table mutations transaction diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_basic b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_basic new file mode 100644 index 000000000000..436213bf1050 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_basic @@ -0,0 +1,21 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, k int); +COMMENT ON TABLE t IS 't has a comment'; +COMMENT ON COLUMN t.j IS 'j has a comment'; +INSERT INTO t VALUES(-1); +INSERT INTO t VALUES(-2); +INSERT INTO t VALUES(-3); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i, k) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_computed_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_computed_index new file mode 100644 index 000000000000..3ce8b2a74081 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_computed_index @@ -0,0 +1,16 @@ +/* setup */ +create table t (i INT PRIMARY KEY, j INT, INDEX((j+1))); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j CASCADE; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[4] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_1_of_2 new file mode 100644 index 000000000000..846b224a7c0e --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_1_of_2 @@ -0,0 +1,16 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, k INT DEFAULT 32 ON UPDATE 42, INDEX((j+1), k)); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j CASCADE; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i, k) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[4] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_2_of_2 new file mode 100644 index 000000000000..c5dc01a559d2 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_create_index_separate_statements.statement_2_of_2 @@ -0,0 +1,25 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, k INT DEFAULT 32 ON UPDATE 42, INDEX((j+1), k)); + +/* test */ +ALTER TABLE t DROP COLUMN j CASCADE; +EXPLAIN (ddl, shape) CREATE UNIQUE INDEX idx ON t(k); +---- +Schema change plan for CREATE UNIQUE INDEX ‹idx› ON ‹defaultdb›.‹public›.‹t› (‹k›); following ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i, k) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from crdb_internal_index_4_name_placeholder into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey+ in relation t + │ └── into idx+ (k, i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[6] into idx+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index idx+ in relation t + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_unique_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_unique_index new file mode 100644 index 000000000000..1e781e7af508 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_unique_index @@ -0,0 +1,19 @@ +/* setup */ +CREATE DATABASE t; +CREATE TABLE t.test (k INT PRIMARY KEY, v INT, pi DECIMAL DEFAULT (DECIMAL '3.14')); +CREATE UNIQUE INDEX vidx ON t.test (v); +ALTER TABLE t.test ADD COLUMN x DECIMAL DEFAULT (DECIMAL '1.4') CHECK (x >= 0); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t.test DROP pi; +---- +Schema change plan for ALTER TABLE ‹t›.‹public›.‹test› DROP COLUMN ‹pi›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index test_pkey- in relation test + │ └── into test_pkey+ (k, v, x) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation test + │ └── from test@[7] into test_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index test_pkey+ in relation test + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_index new file mode 100644 index 000000000000..eb56ed0dfbf3 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_index @@ -0,0 +1,16 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, INDEX (j)); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[4] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_partial_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_partial_index new file mode 100644 index 000000000000..8cf70ee9767f --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_partial_index @@ -0,0 +1,16 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, INDEX (j) WHERE i >=0); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[4] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_udf_default b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_udf_default new file mode 100644 index 000000000000..88aff0d0af10 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_column_with_udf_default @@ -0,0 +1,17 @@ +/* setup */ +CREATE FUNCTION f() RETURNS INT LANGUAGE SQL AS $$ SELECT 1 $$; +CREATE TABLE t (i INT PRIMARY KEY, b INT DEFAULT f()); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN b; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹b›; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[3] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_function b/pkg/sql/schemachanger/testdata/explain_shape/drop_function new file mode 100644 index 000000000000..e6e8781534ff --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_function @@ -0,0 +1,25 @@ +/* setup */ +CREATE TABLE t( + a INT PRIMARY KEY, + b INT, + C INT, + INDEX t_idx_b(b), + INDEX t_idx_c(c) +); +CREATE SEQUENCE sq1; +CREATE VIEW v AS SELECT a FROM t; +CREATE TYPE notmyworkday AS ENUM ('Monday', 'Tuesday'); +CREATE FUNCTION f(a notmyworkday) RETURNS INT VOLATILE LANGUAGE SQL AS $$ + SELECT a FROM t; + SELECT b FROM t@t_idx_b; + SELECT c FROM t@t_idx_c; + SELECT a FROM v; + SELECT nextval('sq1'); +$$; +CREATE TABLE t2(a notmyworkday); + +/* test */ +EXPLAIN (ddl, shape) DROP FUNCTION f; +---- +Schema change plan for DROP FUNCTION ‹""›.‹""›.‹f›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_index_hash_sharded_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_hash_sharded_index new file mode 100644 index 000000000000..6f19dbd6644c --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_hash_sharded_index @@ -0,0 +1,12 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT); +CREATE INDEX idx ON t(j) USING HASH; +INSERT INTO t VALUES(-1); +INSERT INTO t VALUES(-2); +INSERT INTO t VALUES(-3); + +/* test */ +EXPLAIN (ddl, shape) DROP INDEX idx CASCADE; +---- +Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE; + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_index_partial_expression_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_partial_expression_index new file mode 100644 index 000000000000..443f902208b3 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_partial_expression_index @@ -0,0 +1,9 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j STRING); +CREATE INDEX idx ON t(lower(j)) WHERE i > 0; + +/* test */ +EXPLAIN (ddl, shape) DROP INDEX idx CASCADE; +---- +Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE; + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_index_vanilla_index b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_vanilla_index new file mode 100644 index 000000000000..e481cd583296 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_vanilla_index @@ -0,0 +1,9 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT); +CREATE INDEX idx ON t(j); + +/* test */ +EXPLAIN (ddl, shape) DROP INDEX idx CASCADE; +---- +Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹t›@‹idx› CASCADE; + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_index_with_materialized_view_dep b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_with_materialized_view_dep new file mode 100644 index 000000000000..f545ed9b4f09 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_index_with_materialized_view_dep @@ -0,0 +1,11 @@ +/* setup */ +CREATE TABLE t1(i INT PRIMARY KEY, j INT); +CREATE MATERIALIZED VIEW v2 AS SELECT i, j FROM t1; +CREATE INDEX idx ON v2(j); +CREATE MATERIALIZED VIEW v3 AS SELECT j FROM v2@idx; + +/* test */ +EXPLAIN (ddl, shape) DROP INDEX idx CASCADE; +---- +Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx› CASCADE; + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_1_of_2 new file mode 100644 index 000000000000..846b224a7c0e --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_1_of_2 @@ -0,0 +1,16 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, k INT DEFAULT 32 ON UPDATE 42, INDEX((j+1), k)); + +/* test */ +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN j CASCADE; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i, k) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from t@[4] into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_2_of_2 new file mode 100644 index 000000000000..069075a8d54f --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_multiple_columns_separate_statements.statement_2_of_2 @@ -0,0 +1,17 @@ +/* setup */ +CREATE TABLE t (i INT PRIMARY KEY, j INT, k INT DEFAULT 32 ON UPDATE 42, INDEX((j+1), k)); + +/* test */ +ALTER TABLE t DROP COLUMN j CASCADE; +EXPLAIN (ddl, shape) ALTER TABLE t DROP COLUMN k CASCADE; +---- +Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹k› CASCADE; following ALTER TABLE ‹defaultdb›.‹public›.‹t› DROP COLUMN ‹j› CASCADE; + ├── execute 2 system table mutations transactions + ├── backfill using primary index t_pkey- in relation t + │ └── into t_pkey+ (i) + ├── execute 2 system table mutations transactions + ├── merge temporary indexes into backfilled indexes in relation t + │ └── from crdb_internal_index_4_name_placeholder into t_pkey+ + ├── execute 1 system table mutations transaction + ├── validate UNIQUE constraint backed by index t_pkey+ in relation t + └── execute 3 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_schema b/pkg/sql/schemachanger/testdata/explain_shape/drop_schema new file mode 100644 index 000000000000..2962998f4887 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_schema @@ -0,0 +1,9 @@ +/* setup */ +CREATE DATABASE db; +CREATE SCHEMA db.sc; + +/* test */ +EXPLAIN (ddl, shape) DROP SCHEMA db.sc; +---- +Schema change plan for DROP SCHEMA ‹db›.‹sc›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_table b/pkg/sql/schemachanger/testdata/explain_shape/drop_table new file mode 100644 index 000000000000..4d0ba002bc66 --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_table @@ -0,0 +1,12 @@ +/* setup */ +CREATE DATABASE db; +CREATE SCHEMA db.sc; +CREATE TABLE db.sc.t (k INT, v STRING); +COMMENT ON TABLE db.sc.t IS 't has a comment'; +CREATE TYPE db.sc.e AS ENUM('a', 'b', 'c'); + +/* test */ +EXPLAIN (ddl, shape) DROP TABLE db.sc.t; +---- +Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_shape/drop_table_udf_default b/pkg/sql/schemachanger/testdata/explain_shape/drop_table_udf_default new file mode 100644 index 000000000000..c9e20880c71b --- /dev/null +++ b/pkg/sql/schemachanger/testdata/explain_shape/drop_table_udf_default @@ -0,0 +1,9 @@ +/* setup */ +CREATE FUNCTION f() RETURNS INT LANGUAGE SQL AS $$ SELECT 1 $$; +CREATE TABLE t (i INT PRIMARY KEY, b INT DEFAULT f()); + +/* test */ +EXPLAIN (ddl, shape) DROP TABLE t; +---- +Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; + └── execute 2 system table mutations transactions diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column b/pkg/sql/schemachanger/testdata/explain_verbose/add_column index eca7c0927b64..4c977191dc90 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column @@ -17,98 +17,98 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 12 Mutation operations @@ -201,45 +201,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -251,98 +251,98 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 16 Mutation operations @@ -460,48 +460,48 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "DEFAULT or ON UPDATE existence precedes writes to column" │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column writable right before column constraint is enforced." │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 5 Mutation operations @@ -529,22 +529,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -558,10 +558,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -581,10 +581,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -604,10 +604,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -621,10 +621,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -644,19 +644,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 2 Validation operations @@ -676,108 +676,108 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 13 Mutation operations @@ -845,39 +845,39 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 6 Mutation operations @@ -913,36 +913,36 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL DEFAU │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 1} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_1_of_7 index deec83c36b8e..70e89e67df5e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_1_of_7 @@ -18,119 +18,119 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 13 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 14 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_2_of_7 index b3581ac9b3b1..e043fca71c78 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_2_of_7 @@ -18,94 +18,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -179,77 +179,77 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_3_of_7 index a9f460936fda..3c6f2bf05e14 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_3_of_7 @@ -18,94 +18,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -179,77 +179,77 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_4_of_7 index 4b9635dbc0f2..1b9b6c52f0d1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_4_of_7 @@ -18,94 +18,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -179,77 +179,77 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_5_of_7 index 7130caa92726..740784129193 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_5_of_7 @@ -18,82 +18,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -167,95 +167,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_6_of_7 index f3fd8982fd21..d7f261becd81 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_6_of_7 @@ -18,82 +18,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -167,95 +167,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_7_of_7 index 71127e423295..31031e1209af 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column.rollback_7_of_7 @@ -18,82 +18,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -167,95 +167,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq index 12bf2cfb8f93..721d94c6d3ae 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq @@ -14,86 +14,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 11 Mutation operations @@ -180,39 +180,39 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -224,86 +224,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 16 Mutation operations @@ -420,45 +420,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} +│ │ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ │ rule: "DEFAULT or ON UPDATE existence precedes writes to column" │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "column writable right before column constraint is enforced." │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 6 Mutation operations @@ -489,19 +489,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -515,10 +515,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -541,10 +541,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -567,10 +567,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -584,10 +584,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -610,19 +610,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 2 Validation operations @@ -642,99 +642,99 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l+), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 13 Mutation operations @@ -798,30 +798,30 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 6 Mutation operations @@ -854,33 +854,33 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN l INT NOT NULL DEFAU │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 1} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_1_of_7 index 428795a68a3c..ed22cb1b684e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_1_of_7 @@ -15,101 +15,101 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 11 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ PUBLIC → ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 14 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_2_of_7 index 03020419b438..7932c1a24ad4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_2_of_7 @@ -15,79 +15,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -150,74 +150,74 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_3_of_7 index 3743659b277e..ac94e8d4ce0f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_3_of_7 @@ -15,79 +15,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -150,74 +150,74 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_4_of_7 index b5e88dbc2bc1..1a500527b975 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_4_of_7 @@ -15,79 +15,79 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -150,74 +150,74 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_5_of_7 index 6d4a5cf57df5..6202167fabe9 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_5_of_7 @@ -15,70 +15,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -141,89 +141,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_6_of_7 index 78772ba56b54..44b1c45d216a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_6_of_7 @@ -15,70 +15,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -141,89 +141,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_7_of_7 index 8245e82048ef..59295796e259 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_seq.rollback_7_of_7 @@ -15,70 +15,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 12 Mutation operations @@ -141,89 +141,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: l, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "l", ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (l-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2, ReferencedSequenceIDs: [107]} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (l-), ReferencedSequenceIDs: [107 (sq1)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (l-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (l-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique index 584764274aca..2209a60ceae9 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique @@ -13,86 +13,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 10 Mutation operations @@ -172,39 +172,39 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -216,86 +216,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 14 Mutation operations @@ -401,36 +401,36 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "DEFAULT or ON UPDATE existence precedes writes to column" │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 4 Mutation operations @@ -454,19 +454,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -480,10 +480,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -503,10 +503,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -526,10 +526,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -543,10 +543,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -566,10 +566,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ │ └── • 1 Validation operation @@ -582,111 +582,111 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ VALIDATED → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ │ rule: "primary index swap" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} +│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ -│ │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} +│ │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 4 (tbl_j_key+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "primary index with new columns should exist before secondary indexes" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 106, IndexID: 4} +│ │ │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ │ -│ │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} +│ │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 5} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "primary index with new columns should exist before temp indexes" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ │ PUBLIC → VALIDATED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ │ │ └── • 15 Mutation operations @@ -774,19 +774,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 5} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -806,19 +806,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 4 (tbl_j_key+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -832,10 +832,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -855,10 +855,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -878,10 +878,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -895,10 +895,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -918,13 +918,13 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 1 Validation operation @@ -939,89 +939,89 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 4 (tbl_j_key+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 5} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 4 (tbl_j_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 12 Mutation operations @@ -1080,63 +1080,63 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT UNIQUE DEFAULT │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 1} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_10_of_15 index fe1026538d66..712f86a8ecf2 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_10_of_15 @@ -14,127 +14,127 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -228,49 +228,49 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 7 Mutation operations @@ -310,110 +310,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_11_of_15 index 819634d9aaf9..bd11ddc2fcee 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_11_of_15 @@ -14,127 +14,127 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -228,49 +228,49 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 7 Mutation operations @@ -310,110 +310,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_12_of_15 index a4e385dfc5a2..c4a7c5c6f1a1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_12_of_15 @@ -14,127 +14,127 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -228,49 +228,49 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 7 Mutation operations @@ -310,110 +310,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_13_of_15 index 82e069c1ff5d..bde1c9f05e9d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_13_of_15 @@ -14,118 +14,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -219,64 +219,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 8 Mutation operations @@ -320,110 +320,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_14_of_15 index 196c13888241..7a0b942ba7a2 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_14_of_15 @@ -14,118 +14,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -219,64 +219,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 8 Mutation operations @@ -320,110 +320,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_15_of_15 index 82af7f9219c3..d77c719a758f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_15_of_15 @@ -14,118 +14,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 18 Mutation operations @@ -219,64 +219,64 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 8 Mutation operations @@ -320,110 +320,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_1_of_15 index b3dd737485cb..4c9ef13ffc39 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_1_of_15 @@ -14,107 +14,107 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 15; │ ├── • 11 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 12 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_2_of_15 index 9db97131e06c..f244c26f83ef 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_2_of_15 @@ -14,67 +14,67 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -130,80 +130,80 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_3_of_15 index f9769aa0cd92..ab5b03d506ae 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_3_of_15 @@ -14,67 +14,67 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -130,80 +130,80 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_4_of_15 index d897cc03b608..637fa72b1b6a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_4_of_15 @@ -14,67 +14,67 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -130,80 +130,80 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_5_of_15 index 3a7a67062f03..cf61dfad5d09 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_5_of_15 @@ -14,58 +14,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -121,95 +121,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_6_of_15 index 2bf3ea58af47..4adc4c2224ba 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_6_of_15 @@ -14,58 +14,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -121,95 +121,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_7_of_15 index 1c70e2f77898..7c2ef691eae3 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_7_of_15 @@ -14,58 +14,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -121,95 +121,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_8_of_15 index 5ca3b93b7f47..a0e660de6d63 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_8_of_15 @@ -14,58 +14,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -121,95 +121,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_9_of_15 index dfb4e1dc2c16..ad9e216fd7ea 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_default_unique.rollback_9_of_15 @@ -14,133 +14,133 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 4 (tbl_j_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_j_key, IndexID: 4} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_j_key", IndexID: 4 (tbl_j_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 18 Mutation operations @@ -234,37 +234,37 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ └── • 6 Mutation operations @@ -300,95 +300,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 4 (tbl_j_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 3} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 4} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (tbl), IndexID: 4 (tbl_j_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default index 5dfd16ebfe5d..2031ba7d7a19 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default @@ -13,30 +13,30 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ rule: "column existence precedes column dependents" │ │ │ └── • 4 Mutation operations @@ -76,16 +76,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT; │ │ │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -97,30 +97,30 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ └── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ rule: "column existence precedes column dependents" │ │ │ └── • 6 Mutation operations @@ -176,10 +176,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • Column:{DescID: 106, ColumnID: 2} +│ │ └── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ └── • 3 Mutation operations @@ -202,19 +202,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT; │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • Column:{DescID: 106, ColumnID: 2} + │ └── • Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ WRITE_ONLY → PUBLIC │ │ - │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} + │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j+)} │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ - │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j+), IndexID: 1 (tbl_pkey)} │ rule: "column dependents exist before column becomes public" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default.rollback_1_of_1 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default.rollback_1_of_1 index b61825a51de0..68ac44152147 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default.rollback_1_of_1 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_no_default.rollback_1_of_1 @@ -14,29 +14,29 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 1; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 2} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 1 (tbl_pkey)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 2 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ PUBLIC → ABSENT │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (j-), IndexID: 1 (tbl_pkey)} │ PUBLIC → ABSENT │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored index a79d0cb08d31..702dcebd326e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored @@ -15,92 +15,92 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 11 Mutation operations @@ -190,42 +190,42 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -237,92 +237,92 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 15 Mutation operations @@ -437,45 +437,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column writable right before column constraint is enforced." │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 5 Mutation operations @@ -503,22 +503,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -532,10 +532,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -555,10 +555,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -578,10 +578,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -595,10 +595,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -618,19 +618,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 2 Validation operations @@ -650,105 +650,105 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 13 Mutation operations @@ -816,39 +816,39 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 6 Mutation operations @@ -884,36 +884,36 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 1} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_1_of_7 index 9cd13718ce24..d235d5998513 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_1_of_7 @@ -16,110 +16,110 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 12 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 13 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_2_of_7 index 3f40921bca11..0c6bff3922bc 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_2_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,65 +177,65 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_3_of_7 index 87553892441c..4190c3cb667a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_3_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,65 +177,65 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_4_of_7 index b764022dacba..725e2f283db6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_4_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,65 +177,65 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_5_of_7 index a979006e71eb..8b9a9060d228 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_5_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,83 +165,83 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_6_of_7 index 389cd1a3422a..334b5ebc134f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_6_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,83 +165,83 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_7_of_7 index 00dcfbc5da01..ff237cd78305 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored.rollback_7_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,83 +165,83 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 0 (primary), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family index 542dc5e8c4fa..9be66829705c 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family @@ -15,95 +15,95 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} +│ │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 12 Mutation operations @@ -199,45 +199,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} +│ │ │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} +│ │ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -249,95 +249,95 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 9 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} +│ │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 2} +│ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 16 Mutation operations @@ -459,45 +459,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "column writable right before column constraint is enforced." │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 5 Mutation operations @@ -525,22 +525,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -554,10 +554,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -577,10 +577,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -600,10 +600,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -617,10 +617,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -640,19 +640,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 2 Validation operations @@ -672,105 +672,105 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob+), ColumnID: 3 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 2 (tbl_pkey+)} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 13 Mutation operations @@ -838,39 +838,39 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 6 Mutation operations @@ -906,36 +906,36 @@ EXPLAIN (ddl, verbose) ALTER TABLE db.public.tbl ADD COLUMN j INT NOT NULL AS (k │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 1 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 1 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 1} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 1 (tbl_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_1_of_7 index f507d0b16fa8..a47b06e51166 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_1_of_7 @@ -16,116 +16,116 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 13 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 14 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_2_of_7 index 98ba70cd6c3d..636d94d25d99 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_2_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,71 +177,71 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_3_of_7 index 2a2f5762c9fc..b06a8b50667a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_3_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,71 +177,71 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_4_of_7 index b4c5fd28d54f..73ae83cf18e3 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_4_of_7 @@ -16,94 +16,94 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -177,71 +177,71 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_5_of_7 index d662ce1dd028..27652a6a7336 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_5_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,89 +165,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_6_of_7 index fdd0669b1835..7a0f5a036ea1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_6_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,89 +165,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_7_of_7 index a8dbb193e834..9015d9cdc037 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/add_column_with_stored_family.rollback_7_of_7 @@ -16,82 +16,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -165,89 +165,89 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (tbl), Name: "j", ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnFamily:{DescID: 106, Name: bob, ColumnFamilyID: 1} + │ ├── • ColumnFamily:{DescID: 106 (tbl), Name: "bob", ColumnFamilyID: 1 (bob-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ rule: "column type removed before column family" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 1, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (tbl), ColumnFamilyID: 1 (bob-), ColumnID: 3 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (tbl), ColumnID: 3 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: tbl_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (tbl), Name: "tbl_pkey", IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 2 (tbl_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 2 (tbl_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 2 (k), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (tbl), ColumnID: 3 (j-), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (tbl), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (tbl), IndexID: 2 (tbl_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (tbl), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (tbl_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf index 70b214885983..7960f02c400d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf @@ -13,16 +13,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 3 Mutation operations @@ -52,10 +52,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -67,16 +67,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 6 Mutation operations @@ -128,10 +128,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -144,10 +144,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CONSTRAINT check_b CHECK (f(b) > 1); │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b+)} │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_1_of_2 index 45a0c1356ec8..591b4876a6b1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_1_of_2 @@ -14,19 +14,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_2_of_2 index 0f0d091d5cf6..b6d016ada226 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_udf.rollback_2_of_2 @@ -14,19 +14,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_b, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_b", ConstraintID: 2 (check_b-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_b-)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_unvalidated b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_unvalidated index 54c2d0acc07a..60f02f01653e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_unvalidated +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_unvalidated @@ -13,10 +13,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) NOT VALID; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} +│ │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ ABSENT → PUBLIC │ │ │ └── • 2 Mutation operations @@ -40,10 +40,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) NOT VALID; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} + │ │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ PUBLIC → ABSENT │ │ │ └── • 1 Mutation operation @@ -55,10 +55,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) NOT VALID; │ ├── • 2 elements transitioning toward PUBLIC │ │ - │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} + │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ ABSENT → PUBLIC │ └── • 2 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla index aa0c8bc7d28f..13c50a0e9a0f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla @@ -14,16 +14,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 2 Mutation operations @@ -47,10 +47,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -62,16 +62,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 4 Mutation operations @@ -111,10 +111,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -127,10 +127,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > 0) │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i+)} │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_1_of_2 index cf492f2025f0..12e96d820233 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_1_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ rule: "Constraint should be hidden before name" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_2_of_2 index 2f5d0072bf48..b7e4711767e6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_vanilla.rollback_2_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ rule: "Constraint should be hidden before name" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt index 69aa2a7634ce..63f773c0448a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt @@ -14,16 +14,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a' │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ ├── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ rule: "simple constraint visible before name" │ │ │ └── • 4 Mutation operations @@ -59,10 +59,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a' │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ │ ├── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -74,16 +74,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a' │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ ├── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ rule: "simple constraint visible before name" │ │ │ └── • 9 Mutation operations @@ -151,10 +151,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a' │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ │ └── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -167,10 +167,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD CHECK (i > nextval('s') OR j::typ = 'a' │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ └── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j+), ReferencedSequenceIDs: [104 (s)]} │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 index 7b3a23a2384a..c7d12cc52622 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_1_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ ├── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ rule: "Constraint should be hidden before name" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 index d1ceb210e304..df9a1b6868a3 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_check_with_seq_and_udt.rollback_2_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ ├── • CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 107, Name: check_i_j, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 107 (t), Name: "check_i_j", ConstraintID: 2 (check_i_j-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 107, ReferencedTypeIDs: [105 106], IndexID: 0, ConstraintID: 2, ReferencedSequenceIDs: [104]} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 107 (t), ReferencedTypeIDs: [105 (typ), 106 (#106)], IndexID: 0, ConstraintID: 2 (check_i_j-), ReferencedSequenceIDs: [104 (s)]} │ rule: "Constraint should be hidden before name" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key index bbf30fa5830a..761eebfa9404 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key @@ -15,16 +15,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ ├── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ rule: "ForeignKeyConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ └── • Precedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 2 Mutation operations @@ -50,10 +50,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ │ ├── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -65,16 +65,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ ├── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ rule: "ForeignKeyConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} +│ │ └── • Precedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 5 Mutation operations @@ -122,10 +122,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ │ └── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ rule: "ForeignKeyConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -138,10 +138,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 ADD FOREIGN KEY (i) REFERENCES t2(i); │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ └── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ └── • PreviousStagePrecedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey+), ReferencedDescID: 105 (t2)} │ rule: "ForeignKeyConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_1_of_2 index 2c7ee73b81e6..249f07178271 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_1_of_2 @@ -16,19 +16,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ ├── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ │ │ rule: "ForeignKeyConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_2_of_2 index d18509f47fe6..9d42242b1761 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_foreign_key.rollback_2_of_2 @@ -16,19 +16,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ ├── • ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ │ │ rule: "ForeignKeyConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: t1_i_fkey, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2, ReferencedDescID: 105} + │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 104 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 105 (t2)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid index 5716e5310a72..0b6ad1a2bcb0 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid @@ -12,86 +12,86 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -168,47 +168,47 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -220,86 +220,86 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 16 Mutation operations @@ -404,22 +404,22 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -439,19 +439,19 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -465,10 +465,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -488,10 +488,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -511,10 +511,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -528,10 +528,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -551,10 +551,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ │ └── • 1 Validation operation @@ -567,58 +567,58 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ VALIDATED → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ rule: "primary index swap" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} +│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ -│ │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} +│ │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "primary index with new columns should exist before temp indexes" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ PUBLIC → VALIDATED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ │ │ └── • 9 Mutation operations @@ -669,19 +669,19 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 5} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -701,16 +701,16 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -724,10 +724,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -747,10 +747,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -770,10 +770,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -787,10 +787,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -810,10 +810,10 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -828,78 +828,78 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ VALIDATED → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 12 Mutation operations @@ -963,81 +963,81 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "old index absent before new index public when swapping with transient" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → TRANSIENT_VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: PUBLIC->TRANSIENT_VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ ├── • 1 element transitioning toward ABSENT │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ │ └── • 9 Mutation operations @@ -1084,25 +1084,25 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_VALIDATED->TRANSIENT_WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 5 Mutation operations @@ -1134,112 +1134,112 @@ EXPLAIN (ddl, verbose) alter table t add primary key (a); │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ rule: "index removed before garbage collection" │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ rule: "column no longer public before dependents" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 1} + │ └── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 index 39afddc69b21..19f4cc3bebd0 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_10_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 index 52e9390019ce..ed512609ed97 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_11_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 index 4a42b2350223..a546aac98ba4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_12_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 index e7eb0f297482..fa81cdaeef79 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_13_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 index d14f04da1c11..abcb3f48c1e4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_14_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 index 35eb48723438..e273bc0627e0 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_15_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 index e5bf45f7b8f9..17560bb89195 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_1_of_15 @@ -13,120 +13,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 15; │ ├── • 3 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ ├── • 10 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 16 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 index 5196bb026e5d..c88344de9a31 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_2_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 index 6b33ab7cf2e3..12f6ba9711aa 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_3_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 index 278cc97ece7d..22f838c00091 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_4_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 index 71add906dd7e..2179194d44be 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_5_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 index 4c9170bf8181..7499e7eb7089 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_6_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 index 6cfb96346877..a3fde7fb7f04 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_7_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 index 638beefcc3f7..f9ea3b712142 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_8_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 index eab4fbcf768e..c4566de256f7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_primary_key_drop_rowid.rollback_9_of_15 @@ -13,121 +13,121 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -211,34 +211,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ └── • 6 Mutation operations @@ -274,46 +274,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index index 859ad85187f8..e6e5d9371699 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index @@ -14,16 +14,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 2 Mutation operations @@ -46,10 +46,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -61,16 +61,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ rule: "simple constraint visible before name" │ │ │ └── • 4 Mutation operations @@ -110,10 +110,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ rule: "UniqueWithoutIndexConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -126,10 +126,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ADD UNIQUE WITHOUT INDEX (j); │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • PreviousStagePrecedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j+)} │ rule: "UniqueWithoutIndexConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_1_of_2 index 21575846f9f9..f8badf24e8ad 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_1_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ rule: "Constraint should be hidden before name" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_2_of_2 index f50db5357d78..65d81059b502 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_add_unique_without_index.rollback_2_of_2 @@ -15,19 +15,19 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ rule: "Constraint should be hidden before name" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null index 9b432542c870..335efb8d8a10 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null @@ -12,10 +12,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER COLUMN j SET NOT NULL; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ │ ABSENT → WRITE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ └── • 1 Mutation operation @@ -30,7 +30,7 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER COLUMN j SET NOT NULL; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ │ WRITE_ONLY → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -42,10 +42,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER COLUMN j SET NOT NULL; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ │ ABSENT → WRITE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ └── • 3 Mutation operations @@ -77,10 +77,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER COLUMN j SET NOT NULL; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -93,10 +93,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER COLUMN j SET NOT NULL; │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_1_of_2 index 9b7349bce4ef..25ea65718d06 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_1_of_2 @@ -13,10 +13,10 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ WRITE_ONLY → ABSENT │ │ - │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_2_of_2 index aeb92e050edb..1092ee311088 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_column_set_not_null.rollback_2_of_2 @@ -13,10 +13,10 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ │ WRITE_ONLY → ABSENT │ │ - │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 0} │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid index 3d3ca67efa38..c7ac59455cb6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid @@ -12,86 +12,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -168,47 +168,47 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -220,86 +220,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 7 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 16 Mutation operations @@ -405,22 +405,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -440,19 +440,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -466,10 +466,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -489,10 +489,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -512,10 +512,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -529,10 +529,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -552,10 +552,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ │ └── • 1 Validation operation @@ -568,58 +568,58 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ VALIDATED → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ rule: "primary index swap" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} +│ │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ -│ │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} +│ │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "primary index with new columns should exist before temp indexes" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ PUBLIC → VALIDATED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ │ │ └── • 9 Mutation operations @@ -670,19 +670,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 5} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -702,16 +702,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -725,10 +725,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -748,10 +748,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -771,10 +771,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -788,10 +788,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -811,10 +811,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -829,78 +829,78 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ VALIDATED → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 12 Mutation operations @@ -964,81 +964,81 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "old index absent before new index public when swapping with transient" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey~)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → TRANSIENT_VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: PUBLIC->TRANSIENT_VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ ├── • 1 element transitioning toward ABSENT │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ │ └── • 9 Mutation operations @@ -1085,25 +1085,25 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_VALIDATED → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_VALIDATED->TRANSIENT_WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 5 Mutation operations @@ -1135,112 +1135,112 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (a); │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey~)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey~)} │ rule: "index removed before garbage collection" │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey~), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 2 (t_pkey~)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid-), IndexID: 3} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ ├── • ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid-)} │ │ rule: "column no longer public before dependents" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 1} + │ └── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 index ffd9502ba98d..bd7a7a859a03 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_10_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 index b9a7d68a2b5b..aaed851eab50 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_11_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 index 6f44f1c1a059..c2f8f70aa8f5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_12_of_15 @@ -13,118 +13,118 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -208,43 +208,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -284,61 +284,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 index af95722d12e7..488f26fe3dd4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_13_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 index 54c481281d08..9ae27694d720 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_14_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 index a8b648a18540..57b9b8320cd0 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_15_of_15 @@ -13,112 +13,112 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -202,55 +202,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -294,61 +294,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 index 92591443659c..4d24a82f7c6b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_1_of_15 @@ -13,120 +13,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 15; │ ├── • 3 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ ├── • 10 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 16 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 index e1c8e08822f7..7565988ace98 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_2_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 index 753f54715437..104d4d23919d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_3_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 index 1777029181b8..36e978f2e252 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_4_of_15 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -177,43 +177,43 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 index 68827df2fbc6..9e47c4ed50b5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_5_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 index 28de41b30245..97e69e240954 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_6_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 index bad41eabdcb5..6262c0475538 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_7_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 index f0a666c7ad6f..76b47fe2e88b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_8_of_15 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -168,58 +168,58 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 index 389f82345bb4..4414664d3323 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_drop_rowid.rollback_9_of_15 @@ -13,121 +13,121 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 2 (rowid+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: rowid, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "rowid", ColumnID: 2 (rowid+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 2, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 4 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 4 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 2} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 2 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -211,34 +211,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ └── • 6 Mutation operations @@ -274,46 +274,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (rowid+), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 4 (t_pkey-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 2 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash index fa0bf15e164e..9d0645b1ddd6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash @@ -12,176 +12,176 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ ├── • 19 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} +│ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ rule: "simple constraint visible before name" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes temp index existence" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ └── • 22 Mutation operations @@ -355,78 +355,78 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 19 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} +│ │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -438,176 +438,176 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ ├── • 19 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes column dependents" │ │ │ rule: "column name and type set right after column existence" │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} +│ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ rule: "simple constraint visible before name" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes temp index existence" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ rule: "column existence precedes temp index existence" │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ └── • 28 Mutation operations @@ -815,60 +815,60 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ └── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • SameStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column writable right before column constraint is enforced." │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ │ rule: "column is WRITE_ONLY before temporary index is WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 5} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 6 Mutation operations @@ -900,40 +900,40 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ └── • 2 Backfill operations @@ -952,16 +952,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -985,16 +985,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -1018,16 +1018,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 2 Backfill operations @@ -1046,16 +1046,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -1079,37 +1079,37 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index is ready to be validated before we validate constraint on it" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 4 Validation operations @@ -1138,141 +1138,141 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ ├── • 6 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "swapped primary index public before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 5} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+)} │ │ │ │ rule: "column existence precedes column dependents" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ rule: "ColumnNotNull transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2 (check_crdb_internal_j_shard_3+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 4 (t_i_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 5 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 17 Mutation operations @@ -1354,45 +1354,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3+), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 7 Mutation operations @@ -1432,48 +1432,48 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j) USING H │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 1} + │ └── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_1_of_7 index 66e1aea55d4d..bdf818cc0232 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_1_of_7 @@ -13,218 +13,218 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 24 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index no longer public before index name" │ └── • 25 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_2_of_7 index 3191d3a7a434..535a82b4d9f6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_2_of_7 @@ -13,181 +13,181 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -317,116 +317,116 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_3_of_7 index 4bc968940ca0..535b33a99c35 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_3_of_7 @@ -13,181 +13,181 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -317,116 +317,116 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_4_of_7 index 1c43f9408006..320f1e3b1824 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_4_of_7 @@ -13,181 +13,181 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -317,116 +317,116 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_5_of_7 index ebc400d960e5..4bf2bf36b756 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_5_of_7 @@ -13,157 +13,157 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -293,152 +293,152 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 10 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 11 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_6_of_7 index 5cdc222d2b2b..eaa0ab174985 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_6_of_7 @@ -13,157 +13,157 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -293,152 +293,152 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 10 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 11 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_7_of_7 index 4109ed188956..f2d88bed887a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_using_hash.rollback_7_of_7 @@ -13,157 +13,157 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 22 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_3, ConstraintID: 2} + │ │ ├── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_3", ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 2, ConstraintID: 2} + │ │ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2 (check_crdb_internal_j_shard_3-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 24 Mutation operations @@ -293,152 +293,152 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 10 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_3, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_3", ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 3, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_3-), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 11 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla index 88ec7ebf2cb1..a7fadfd481f1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla @@ -13,96 +13,96 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ ├── • 11 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ └── • 13 Mutation operations @@ -198,51 +198,51 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 11 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -254,96 +254,96 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ ├── • 11 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ └── • 19 Mutation operations @@ -472,34 +472,34 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 5} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 4 Mutation operations @@ -523,34 +523,34 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} +│ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ │ └── • 2 Backfill operations @@ -569,16 +569,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -602,16 +602,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -635,16 +635,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 2 Backfill operations @@ -663,16 +663,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -696,19 +696,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 2 Validation operations @@ -727,84 +727,84 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ - │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key+), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 12 Mutation operations @@ -865,42 +865,42 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 7 Mutation operations @@ -940,48 +940,48 @@ EXPLAIN (ddl, verbose) ALTER TABLE t ALTER PRIMARY KEY USING COLUMNS (j); │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 1} + │ └── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_1_of_7 index 87b88f479fd0..85a42d0a7b64 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_1_of_7 @@ -14,127 +14,127 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 15 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index no longer public before index name" │ └── • 17 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_2_of_7 index 25081232dd84..0e0eeecbfd26 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_2_of_7 @@ -14,100 +14,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -189,70 +189,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_3_of_7 index 807698549c67..66ef89dd7cae 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_3_of_7 @@ -14,100 +14,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -189,70 +189,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_4_of_7 index 77dfc1430f58..7ba546de0aa7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_4_of_7 @@ -14,100 +14,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -189,70 +189,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 6 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_5_of_7 index 6c54e684c718..b09a21e523cf 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_5_of_7 @@ -14,82 +14,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -171,100 +171,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_6_of_7 index 0f3115704c67..743c6a465ff7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_6_of_7 @@ -14,82 +14,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -171,100 +171,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_7_of_7 index df1ec12acb32..c186c940cfdf 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_alter_primary_key_vanilla.rollback_7_of_7 @@ -14,82 +14,82 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 13 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index no longer public before index name" │ │ │ └── • 15 Mutation operations @@ -171,100 +171,100 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 4 (t_i_key-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_i_key, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_i_key", IndexID: 4 (t_i_key-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 4 (t_i_key-), ConstraintID: 4, TemporaryIndexID: 5, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (t_i_key-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 5, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 5, ConstraintID: 5, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_check b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_check index a2c3c445e617..f57916f67d97 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_check +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_check @@ -12,16 +12,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT check_i; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 2 Mutation operations @@ -41,10 +41,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT check_i; │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -56,16 +56,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT check_i; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 4 Mutation operations @@ -102,13 +102,13 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT check_i; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ VALIDATED → ABSENT │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_i-)} │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ - │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ rule: "Constraint should be hidden before name" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_fk b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_fk index cb2236ac4511..317905987593 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_fk +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_fk @@ -13,16 +13,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 DROP CONSTRAINT t1_i_fkey; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ ├── • ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ │ rule: "ForeignKeyConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 2 Mutation operations @@ -42,10 +42,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 DROP CONSTRAINT t1_i_fkey; │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ │ ├── • ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -57,16 +57,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 DROP CONSTRAINT t1_i_fkey; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ ├── • ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ │ rule: "ForeignKeyConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} +│ │ └── • Precedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 5 Mutation operations @@ -108,13 +108,13 @@ EXPLAIN (ddl, verbose) ALTER TABLE t1 DROP CONSTRAINT t1_i_fkey; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} + │ └── • ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ VALIDATED → ABSENT │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105, IndexID: 0, ConstraintID: 2, ReferencedDescID: 104} + │ ├── • PreviousStagePrecedence dependency from VALIDATED ForeignKeyConstraint:{DescID: 105 (t1), IndexID: 0, ConstraintID: 2 (t1_i_fkey-), ReferencedDescID: 104 (#104)} │ │ rule: "ForeignKeyConstraint transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ - │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 105, Name: t1_i_fkey, ConstraintID: 2} + │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 105 (t1), Name: "t1_i_fkey", ConstraintID: 2 (t1_i_fkey-)} │ rule: "Constraint should be hidden before name" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_uwi b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_uwi index 363ad4ab9e0a..c56119487fec 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_uwi +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_drop_constraint_uwi @@ -14,16 +14,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT unique_j; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 2 Mutation operations @@ -43,10 +43,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT unique_j; │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -58,16 +58,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT unique_j; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ │ rule: "UniqueWithoutIndexConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 4 Mutation operations @@ -104,13 +104,13 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP CONSTRAINT unique_j; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ └── • UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ VALIDATED → ABSENT │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ ├── • PreviousStagePrecedence dependency from VALIDATED UniqueWithoutIndexConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (unique_j-)} │ │ rule: "UniqueWithoutIndexConstraint transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ - │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: unique_j, ConstraintID: 2} + │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "unique_j", ConstraintID: 2 (unique_j-)} │ rule: "Constraint should be hidden before name" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint index bc89a8a66c77..8f9e1b3335de 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint @@ -13,27 +13,27 @@ EXPLAIN (ddl, verbose) ALTER TABLE t VALIDATE CONSTRAINT check_i; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ rule: "simple constraint visible before name" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} +│ │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ PUBLIC → ABSENT │ │ │ └── • 4 Mutation operations @@ -66,18 +66,18 @@ EXPLAIN (ddl, verbose) ALTER TABLE t VALIDATE CONSTRAINT check_i; │ │ │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ │ WRITE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} +│ │ │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -89,27 +89,27 @@ EXPLAIN (ddl, verbose) ALTER TABLE t VALIDATE CONSTRAINT check_i; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ │ ABSENT → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: ABSENT->WRITE_ONLY" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} +│ │ └── • Precedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ rule: "simple constraint visible before name" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} +│ │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ │ rule: "Constraint should be hidden before name" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i-)} │ │ PUBLIC → ABSENT │ │ │ └── • 6 Mutation operations @@ -158,10 +158,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t VALIDATE CONSTRAINT check_i; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -174,10 +174,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t VALIDATE CONSTRAINT check_i; │ ├── • 1 element transitioning toward PUBLIC │ │ - │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ │ VALIDATED → PUBLIC │ │ - │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ └── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i+)} │ rule: "CheckConstraint transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ └── • 3 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_1_of_2 index 8247ce095eb4..c95c36bbb24f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_1_of_2 @@ -14,27 +14,27 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 2; │ ├── • 2 elements transitioning toward PUBLIC │ │ - │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} + │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ ABSENT → PUBLIC │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_2_of_2 index 589fcb97f421..053a492f8b46 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/alter_table_validate_constraint.rollback_2_of_2 @@ -14,27 +14,27 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 2; │ ├── • 2 elements transitioning toward PUBLIC │ │ - │ ├── • CheckConstraintUnvalidated:{DescID: 104, ConstraintID: 2} + │ ├── • CheckConstraintUnvalidated:{DescID: 104 (t), ConstraintID: 2 (check_i+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 2} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 2 (check_i+)} │ ABSENT → PUBLIC │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ │ │ WRITE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} │ │ rule: "Constraint should be hidden before name" │ │ - │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_i, ConstraintID: 3} + │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_i", ConstraintID: 3 (check_i-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 3} + │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 3 (check_i-)} │ rule: "Constraint should be hidden before name" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function b/pkg/sql/schemachanger/testdata/explain_verbose/create_function index 1aaae5bbbaaf..9d784f8e6d0d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function @@ -32,52 +32,52 @@ $$; │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Function:{DescID: 110} +│ │ ├── • Function:{DescID: 110 (f+)} │ │ │ ABSENT → DESCRIPTOR_ADDED │ │ │ -│ │ ├── • SchemaChild:{DescID: 110, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ │ rule: "descriptor existence precedes dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 110} +│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 110 (f+)} │ │ │ rule: "function name should be set before parent ids" │ │ │ -│ │ ├── • FunctionName:{DescID: 110} +│ │ ├── • FunctionName:{DescID: 110 (f+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • FunctionVolatility:{DescID: 110} +│ │ ├── • FunctionVolatility:{DescID: 110 (f+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • Owner:{DescID: 110} +│ │ ├── • Owner:{DescID: 110 (f+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 110, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 110, Name: root} +│ │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ └── • FunctionBody:{DescID: 110} +│ │ └── • FunctionBody:{DescID: 110 (f+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} +│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ │ └── • 10 Mutation operations @@ -210,28 +210,28 @@ $$; │ │ │ ├── • 8 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Function:{DescID: 110} + │ │ ├── • Function:{DescID: 110 (f+)} │ │ │ DESCRIPTOR_ADDED → ABSENT │ │ │ - │ │ ├── • SchemaChild:{DescID: 110, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • FunctionName:{DescID: 110} + │ │ ├── • FunctionName:{DescID: 110 (f+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • FunctionVolatility:{DescID: 110} + │ │ ├── • FunctionVolatility:{DescID: 110 (f+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 110} + │ │ ├── • Owner:{DescID: 110 (f+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • UserPrivileges:{DescID: 110, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "admin"} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • UserPrivileges:{DescID: 110, Name: root} + │ │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "root"} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • FunctionBody:{DescID: 110} + │ │ └── • FunctionBody:{DescID: 110 (f+)} │ │ PUBLIC → ABSENT │ │ │ └── • 1 Mutation operation @@ -243,73 +243,73 @@ $$; │ ├── • 8 elements transitioning toward PUBLIC │ │ - │ ├── • Function:{DescID: 110} + │ ├── • Function:{DescID: 110 (f+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 110, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 110} + │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 110 (f+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC FunctionVolatility:{DescID: 110} + │ │ ├── • Precedence dependency from PUBLIC FunctionVolatility:{DescID: 110 (f+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 110} + │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 110 (f+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 110, Name: admin} + │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "admin"} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 110, Name: root} + │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 110 (f+), Name: "root"} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 110} + │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 110 (f+)} │ │ rule: "dependents exist before descriptor becomes public" │ │ - │ ├── • SchemaChild:{DescID: 110, ReferencedDescID: 101} + │ ├── • SchemaChild:{DescID: 110 (f+), ReferencedDescID: 101 (public)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ - │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 110} + │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 110 (f+)} │ │ rule: "function name should be set before parent ids" │ │ - │ ├── • FunctionName:{DescID: 110} + │ ├── • FunctionName:{DescID: 110 (f+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • FunctionVolatility:{DescID: 110} + │ ├── • FunctionVolatility:{DescID: 110 (f+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • Owner:{DescID: 110} + │ ├── • Owner:{DescID: 110 (f+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • UserPrivileges:{DescID: 110, Name: admin} + │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "admin"} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • UserPrivileges:{DescID: 110, Name: root} + │ ├── • UserPrivileges:{DescID: 110 (f+), Name: "root"} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ └── • FunctionBody:{DescID: 110} + │ └── • FunctionBody:{DescID: 110 (f+)} │ │ ABSENT → PUBLIC │ │ - │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110} + │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 110 (f+)} │ rule: "descriptor existence precedes dependents" │ └── • 11 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_1_of_7 index 92e2ad60b312..2e050fddbf21 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_1_of_7 @@ -17,107 +17,107 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ │ │ ├── • 15 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 17 Mutation operations @@ -203,28 +203,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • Function:{DescID: 105} + │ └── • Function:{DescID: 105 (t-)} │ │ DROPPED → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ rule: "descriptor dropped in transaction before removal" │ │ - │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ rule: "non-data dependents removed before descriptor" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_2_of_7 index f9bc1b9fbb4d..14480b3837a9 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_2_of_7 @@ -17,95 +17,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -183,55 +183,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_3_of_7 index 92dffe4cf38b..4d67d3efe7f4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_3_of_7 @@ -17,95 +17,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -183,55 +183,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_4_of_7 index 639f5f9ee2bc..84a709987448 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_4_of_7 @@ -17,95 +17,95 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -183,55 +183,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_5_of_7 index a8a543c5ea69..2c672491bcb5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_5_of_7 @@ -17,86 +17,86 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -174,70 +174,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_6_of_7 index ed9a64921c1b..a61061a7a8c6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_6_of_7 @@ -17,86 +17,86 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -174,70 +174,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_7_of_7 index 5539b778d918..90aa1e59c9e2 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.rollback_7_of_7 @@ -17,86 +17,86 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 14 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t-)} │ │ │ DESCRIPTOR_ADDED → DROPPED │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • FunctionBody:{DescID: 105} + │ │ ├── • FunctionBody:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105} + │ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 16 Mutation operations @@ -174,70 +174,70 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (#101)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 105 (t-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_1_of_2 index dd98e647f998..9ba2965cd4fb 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_1_of_2 @@ -15,46 +15,46 @@ EXPLAIN (ddl, verbose) CREATE FUNCTION t() RETURNS INT LANGUAGE SQL AS $$ SELECT │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Function:{DescID: 105} +│ │ ├── • Function:{DescID: 105 (t+)} │ │ │ ABSENT → DESCRIPTOR_ADDED │ │ │ -│ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ │ rule: "descriptor existence precedes dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105} +│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105 (t+)} │ │ │ rule: "function name should be set before parent ids" │ │ │ -│ │ ├── • FunctionName:{DescID: 105} +│ │ ├── • FunctionName:{DescID: 105 (t+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (t+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ └── • FunctionBody:{DescID: 105} +│ │ └── • FunctionBody:{DescID: 105 (t+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ rule: "descriptor existence precedes dependents" │ │ │ └── • 9 Mutation operations @@ -116,25 +116,25 @@ EXPLAIN (ddl, verbose) CREATE FUNCTION t() RETURNS INT LANGUAGE SQL AS $$ SELECT │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t+)} │ │ │ DESCRIPTOR_ADDED → ABSENT │ │ │ - │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • FunctionName:{DescID: 105} + │ │ ├── • FunctionName:{DescID: 105 (t+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 105} + │ │ ├── • Owner:{DescID: 105 (t+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • FunctionBody:{DescID: 105} + │ │ └── • FunctionBody:{DescID: 105 (t+)} │ │ PUBLIC → ABSENT │ │ │ └── • 1 Mutation operation @@ -146,64 +146,64 @@ EXPLAIN (ddl, verbose) CREATE FUNCTION t() RETURNS INT LANGUAGE SQL AS $$ SELECT │ ├── • 7 elements transitioning toward PUBLIC │ │ - │ ├── • Function:{DescID: 105} + │ ├── • Function:{DescID: 105 (t+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 105} + │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 105 (t+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 105} + │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 105 (t+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 105} + │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 105 (t+)} │ │ rule: "dependents exist before descriptor becomes public" │ │ - │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ ├── • SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ - │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105} + │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105 (t+)} │ │ rule: "function name should be set before parent ids" │ │ - │ ├── • FunctionName:{DescID: 105} + │ ├── • FunctionName:{DescID: 105 (t+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • Owner:{DescID: 105} + │ ├── • Owner:{DescID: 105 (t+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • UserPrivileges:{DescID: 105, Name: admin} + │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • UserPrivileges:{DescID: 105, Name: root} + │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ └── • FunctionBody:{DescID: 105} + │ └── • FunctionBody:{DescID: 105 (t+)} │ │ ABSENT → PUBLIC │ │ - │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} + │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ rule: "descriptor existence precedes dependents" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_2_of_2 index c0ea2db87839..6dc8a50f491e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_function_in_txn.statement_2_of_2 @@ -16,54 +16,54 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 2} +│ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 7 Mutation operations @@ -120,51 +120,51 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 12 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 105} +│ │ │ ├── • Owner:{DescID: 105 (t+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Function:{DescID: 105} +│ │ │ ├── • Function:{DescID: 105 (t+)} │ │ │ │ DESCRIPTOR_ADDED → ABSENT │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ │ ├── • SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • FunctionName:{DescID: 105} +│ │ │ ├── • FunctionName:{DescID: 105 (t+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • FunctionBody:{DescID: 105} +│ │ │ ├── • FunctionBody:{DescID: 105 (t+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 2} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -176,96 +176,96 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ ├── • 12 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (t+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • Function:{DescID: 105} +│ │ ├── • Function:{DescID: 105 (t+)} │ │ │ ABSENT → DESCRIPTOR_ADDED │ │ │ -│ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ ├── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ │ rule: "descriptor existence precedes dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105} +│ │ │ └── • Precedence dependency from PUBLIC FunctionName:{DescID: 105 (t+)} │ │ │ rule: "function name should be set before parent ids" │ │ │ -│ │ ├── • FunctionName:{DescID: 105} +│ │ ├── • FunctionName:{DescID: 105 (t+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • FunctionBody:{DescID: 105} +│ │ ├── • FunctionBody:{DescID: 105 (t+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Function:{DescID: 105 (t+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 2} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 2} +│ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 21 Mutation operations @@ -407,22 +407,22 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 4 Mutation operations @@ -445,19 +445,19 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -471,10 +471,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -497,10 +497,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -523,10 +523,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -540,10 +540,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -566,13 +566,13 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 2} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 1 Validation operation @@ -587,60 +587,60 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Function:{DescID: 105} + │ │ ├── • Function:{DescID: 105 (t+)} │ │ │ │ DESCRIPTOR_ADDED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 105} + │ │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 105 (t+)} │ │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105, Name: admin} + │ │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "admin"} │ │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105, Name: root} + │ │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 105 (t+), Name: "root"} │ │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ │ ├── • Precedence dependency from PUBLIC SchemaChild:{DescID: 105 (t+), ReferencedDescID: 101 (public)} │ │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 105} + │ │ │ ├── • Precedence dependency from PUBLIC FunctionName:{DescID: 105 (t+)} │ │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 105} + │ │ │ └── • Precedence dependency from PUBLIC FunctionBody:{DescID: 105 (t+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 2 (idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 2 (idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 9 Mutation operations @@ -685,22 +685,22 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(b); │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (b), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (a), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index b/pkg/sql/schemachanger/testdata/explain_verbose/create_index index 577e46b5f01f..a877b23748d9 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index @@ -13,54 +13,54 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 106, IndexID: 2} +│ │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} +│ │ └── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 9 Mutation operations @@ -125,30 +125,30 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 106, IndexID: 2} +│ │ │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} +│ │ │ └── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ └── • 1 Mutation operation @@ -160,54 +160,54 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 106, IndexID: 2} +│ │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} +│ │ └── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "temp index existence precedes index dependents" │ │ │ └── • 15 Mutation operations @@ -307,22 +307,22 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 5 Mutation operations @@ -348,19 +348,19 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -374,10 +374,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 5 Mutation operations @@ -403,10 +403,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 5 Mutation operations @@ -432,10 +432,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -449,10 +449,10 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 5 Mutation operations @@ -478,13 +478,13 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106, Name: idx1, IndexID: 2} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 1 Validation operation @@ -499,39 +499,39 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1+), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 9 Mutation operations @@ -576,22 +576,22 @@ EXPLAIN (ddl, verbose) CREATE INDEX idx1 ON t (v) WHERE (v = 'a'); │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_1_of_7 index 9713abd59298..108a7a91e455 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_1_of_7 @@ -14,67 +14,67 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index no longer public before index name" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 12 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_2_of_7 index a93f301edb55..f8b791ee5cfb 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_2_of_7 @@ -14,55 +14,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -120,31 +120,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_3_of_7 index 27c34437b42e..3531ab36fbea 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_3_of_7 @@ -14,55 +14,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -120,31 +120,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_4_of_7 index 6e13c7484513..c384357a195f 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_4_of_7 @@ -14,55 +14,55 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -120,31 +120,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_5_of_7 index c642d061263a..cf9dbcfb4f6b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_5_of_7 @@ -14,46 +14,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -121,46 +121,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_6_of_7 index f89c3b69c783..3f2d57b0bbd4 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_6_of_7 @@ -14,46 +14,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -121,46 +121,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_7_of_7 index 4b12d95fc625..496d590bef2a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_index.rollback_7_of_7 @@ -14,46 +14,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ ├── • IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -121,46 +121,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 2 (idx1-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: idx1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (t), Name: "idx1", IndexID: 2 (idx1-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 2} + │ ├── • IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 106 (t), IndexID: 2 (idx1-), TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 2 (v), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (t), ColumnID: 1 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 3} + │ └── • IndexData:{DescID: 106 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (t), IndexID: 2 (idx1-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 3, ConstraintID: 1, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (t), IndexID: 3, ConstraintID: 1, SourceIndexID: 1 (t_pkey)} │ rule: "index removed before garbage collection" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/create_schema b/pkg/sql/schemachanger/testdata/explain_verbose/create_schema index 6a3b5e461cac..d046ca8547e5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/create_schema +++ b/pkg/sql/schemachanger/testdata/explain_verbose/create_schema @@ -11,43 +11,43 @@ EXPLAIN (ddl, verbose) CREATE SCHEMA sc; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • Schema:{DescID: 104} +│ │ ├── • Schema:{DescID: 104 (sc+)} │ │ │ ABSENT → DESCRIPTOR_ADDED │ │ │ -│ │ ├── • SchemaName:{DescID: 104} +│ │ ├── • SchemaName:{DescID: 104 (sc+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} +│ │ ├── • Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • SchemaParent:{DescID: 104, ReferencedDescID: 100} +│ │ ├── • SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • Owner:{DescID: 104} +│ │ ├── • Owner:{DescID: 104 (sc+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 104, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 104 (sc+), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ │ rule: "descriptor existence precedes dependents" │ │ │ -│ │ └── • UserPrivileges:{DescID: 104, Name: root} +│ │ └── • UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} +│ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ │ └── • 7 Mutation operations @@ -95,25 +95,25 @@ EXPLAIN (ddl, verbose) CREATE SCHEMA sc; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Schema:{DescID: 104} + │ │ ├── • Schema:{DescID: 104 (sc+)} │ │ │ DESCRIPTOR_ADDED → ABSENT │ │ │ - │ │ ├── • SchemaName:{DescID: 104} + │ │ ├── • SchemaName:{DescID: 104 (sc+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} + │ │ ├── • Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SchemaParent:{DescID: 104, ReferencedDescID: 100} + │ │ ├── • SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Owner:{DescID: 104} + │ │ ├── • Owner:{DescID: 104 (sc+)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • UserPrivileges:{DescID: 104, Name: admin} + │ │ ├── • UserPrivileges:{DescID: 104 (sc+), Name: "admin"} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • UserPrivileges:{DescID: 104, Name: root} + │ │ └── • UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ │ PUBLIC → ABSENT │ │ │ └── • 1 Mutation operation @@ -125,61 +125,61 @@ EXPLAIN (ddl, verbose) CREATE SCHEMA sc; │ ├── • 7 elements transitioning toward PUBLIC │ │ - │ ├── • Schema:{DescID: 104} + │ ├── • Schema:{DescID: 104 (sc+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC SchemaName:{DescID: 104} + │ │ ├── • Precedence dependency from PUBLIC SchemaName:{DescID: 104 (sc+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} + │ │ ├── • Precedence dependency from PUBLIC Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC SchemaParent:{DescID: 104, ReferencedDescID: 100} + │ │ ├── • Precedence dependency from PUBLIC SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 104} + │ │ ├── • Precedence dependency from PUBLIC Owner:{DescID: 104 (sc+)} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 104, Name: admin} + │ │ ├── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "admin"} │ │ │ rule: "dependents exist before descriptor becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 104, Name: root} + │ │ └── • Precedence dependency from PUBLIC UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ │ rule: "dependents exist before descriptor becomes public" │ │ - │ ├── • SchemaName:{DescID: 104} + │ ├── • SchemaName:{DescID: 104 (sc+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • Namespace:{DescID: 104, Name: sc, ReferencedDescID: 100} + │ ├── • Namespace:{DescID: 104 (sc+), Name: "sc", ReferencedDescID: 100 (defaultdb)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • SchemaParent:{DescID: 104, ReferencedDescID: 100} + │ ├── • SchemaParent:{DescID: 104 (sc+), ReferencedDescID: 100 (defaultdb)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • Owner:{DescID: 104} + │ ├── • Owner:{DescID: 104 (sc+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ ├── • UserPrivileges:{DescID: 104, Name: admin} + │ ├── • UserPrivileges:{DescID: 104 (sc+), Name: "admin"} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ │ rule: "descriptor existence precedes dependents" │ │ - │ └── • UserPrivileges:{DescID: 104, Name: root} + │ └── • UserPrivileges:{DescID: 104 (sc+), Name: "root"} │ │ ABSENT → PUBLIC │ │ - │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104} + │ └── • Precedence dependency from DESCRIPTOR_ADDED Schema:{DescID: 104 (sc+)} │ rule: "descriptor existence precedes dependents" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic index eaffac90683a..657815a745fb 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic @@ -17,68 +17,68 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 2} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} +│ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 9 Mutation operations @@ -142,38 +142,38 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} +│ │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -185,68 +185,68 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 2} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} +│ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 13 Mutation operations @@ -334,22 +334,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -369,19 +369,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -395,10 +395,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -418,10 +418,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -441,10 +441,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -458,10 +458,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -481,10 +481,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -499,69 +499,69 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 10 Mutation operations @@ -615,45 +615,45 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 7 Mutation operations @@ -696,67 +696,67 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── • Precedence dependency from ABSENT ColumnComment:{DescID: 104 (t), ColumnID: 2 (j-), Comment: "j has a comment"} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 1} + │ └── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_1_of_7 index ef81a47f59b5..68d8c3173400 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_1_of_7 @@ -18,87 +18,87 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 3 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ ABSENT → PUBLIC │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 13 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_2_of_7 index 1b081c41e459..1680198d175e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_2_of_7 @@ -18,75 +18,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -151,31 +151,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_3_of_7 index 94cba80a0a0f..1b945caf5318 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_3_of_7 @@ -18,75 +18,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -151,31 +151,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_4_of_7 index 3e26fafa9acf..96ab8c78dd70 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_4_of_7 @@ -18,75 +18,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -151,31 +151,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_5_of_7 index 85811aeb834a..6e62de9aad83 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_5_of_7 @@ -18,66 +18,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -142,46 +142,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_6_of_7 index 6b0d7c664458..fe5b19eaaa47 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_6_of_7 @@ -18,66 +18,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -142,46 +142,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_7_of_7 index 7038419b9642..2ee26e6c03ba 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_basic.rollback_7_of_7 @@ -18,66 +18,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnComment:{DescID: 104, ColumnID: 2, Comment: j has a comment} + │ │ └── • ColumnComment:{DescID: 104 (t), ColumnID: 2 (j+), Comment: "j has a comment"} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 12 Mutation operations @@ -142,46 +142,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 2} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 3} + │ └── • IndexData:{DescID: 104 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index index 8d8ca9eca768..3e509cdae905 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index @@ -12,71 +12,71 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 9 Mutation operations @@ -136,38 +136,38 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -179,71 +179,71 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 13 Mutation operations @@ -327,19 +327,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -359,16 +359,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -382,10 +382,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -405,10 +405,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -428,10 +428,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -445,10 +445,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -468,10 +468,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -486,96 +486,96 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 14 Mutation operations @@ -647,76 +647,76 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_idx-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -760,73 +760,73 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_1_of_7 index 6f5a0e61ab30..bca768769b6b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_1_of_7 @@ -13,99 +13,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 5 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "ensure columns are in increasing order" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ - │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ VALIDATED → PUBLIC │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ - │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ rule: "index dependents exist before index becomes public" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 15 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_2_of_7 index 50c14bce1eea..d08036b9d614 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_2_of_7 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -162,28 +162,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_3_of_7 index ee7f1c8ea6b3..88df41faf6ae 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_3_of_7 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -162,28 +162,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_4_of_7 index 0ed6e186e8c4..09a70727d299 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_4_of_7 @@ -13,90 +13,90 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -162,28 +162,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_5_of_7 index d2bdf02fabd2..158238344ddf 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_5_of_7 @@ -13,84 +13,84 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -156,40 +156,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_6_of_7 index 87b4ca4fc02d..58f8a1522ebf 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_6_of_7 @@ -13,84 +13,84 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -156,40 +156,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_7_of_7 index 0c4a08c81724..653540dbcae3 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_computed_index.rollback_7_of_7 @@ -13,84 +13,84 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_idx", IndexID: 2 (t_expr_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 14 Mutation operations @@ -156,40 +156,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_10_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_10_of_15 index 42915ce0d0c6..b9588761faaa 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_10_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_10_of_15 @@ -14,169 +14,169 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -292,46 +292,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -371,61 +371,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 10 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_11_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_11_of_15 index 81c4c5e5818c..bbdd9be1eb75 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_11_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_11_of_15 @@ -14,169 +14,169 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -292,46 +292,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -371,61 +371,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 11 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_12_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_12_of_15 index 42a505a9048d..cb75c9947696 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_12_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_12_of_15 @@ -14,169 +14,169 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -292,46 +292,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -371,61 +371,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 12 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_13_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_13_of_15 index 4086ad49ecb6..674e42f7b573 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_13_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_13_of_15 @@ -14,160 +14,160 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -283,61 +283,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -381,61 +381,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 13 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_14_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_14_of_15 index 4e32ac21ccb6..baa6d8df8cb8 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_14_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_14_of_15 @@ -14,160 +14,160 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -283,61 +283,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -381,61 +381,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 14 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_15_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_15_of_15 index c6e84851fdf1..641b4f3a5ba7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_15_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_15_of_15 @@ -14,160 +14,160 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -283,61 +283,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ │ └── • 8 Mutation operations @@ -381,61 +381,61 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 15 of 15; │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 5} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 5} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_1_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_1_of_15 index 8456cfa9670e..e1fbed57d8e2 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_1_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_1_of_15 @@ -14,120 +14,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 15; │ ├── • 5 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • Column:{DescID: 104, ColumnID: 4} + │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "ensure columns are in increasing order" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ABSENT → PUBLIC │ ├── • 7 elements transitioning toward ABSENT │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 17 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_2_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_2_of_15 index e95324baab5b..c62e309318d6 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_2_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_2_of_15 @@ -14,108 +14,108 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -193,31 +193,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 15; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_3_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_3_of_15 index 93b88d6c8aaf..fd46ac0ae2ab 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_3_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_3_of_15 @@ -14,108 +14,108 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -193,31 +193,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 15; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_4_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_4_of_15 index 8ad4410b6327..5681f687933c 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_4_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_4_of_15 @@ -14,108 +14,108 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -193,31 +193,31 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 15; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_5_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_5_of_15 index 5a79fe071002..220200bd41c3 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_5_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_5_of_15 @@ -14,99 +14,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -184,46 +184,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_6_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_6_of_15 index 3ae56c5562c2..9420eabc2c15 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_6_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_6_of_15 @@ -14,99 +14,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -184,46 +184,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_7_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_7_of_15 index 386c432881ba..c7a523d6681b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_7_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_7_of_15 @@ -14,99 +14,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -184,46 +184,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_8_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_8_of_15 index b3f42f361f95..7d384aaf735b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_8_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_8_of_15 @@ -14,99 +14,99 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 16 Mutation operations @@ -184,46 +184,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 8 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_9_of_15 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_9_of_15 index de0f2643f34a..2593081dbdff 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_9_of_15 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.rollback_9_of_15 @@ -14,175 +14,175 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey+), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "primary index swap" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 12 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 24 Mutation operations @@ -298,34 +298,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ └── • 6 Mutation operations @@ -361,46 +361,46 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 9 of 15; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 5} + │ └── • IndexData:{DescID: 104 (t), IndexID: 5 (idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx-), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey-)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_1_of_2 index e3ac6c45b502..cb53c3172ed7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_1_of_2 @@ -12,83 +12,83 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -160,44 +160,44 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -209,83 +209,83 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 15 Mutation operations @@ -381,22 +381,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -416,19 +416,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -442,10 +442,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -465,10 +465,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -488,10 +488,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -505,10 +505,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -528,10 +528,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -546,111 +546,111 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 16 Mutation operations @@ -734,88 +734,88 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ rule: "dependents removed before index" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 9 Mutation operations @@ -866,76 +866,76 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_2_of_2 index fde39be8760d..f72cab2e272b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_create_index_separate_statements.statement_2_of_2 @@ -17,44 +17,44 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -66,83 +66,83 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → BACKFILL_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 15 Mutation operations @@ -241,22 +241,22 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -276,19 +276,19 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -302,10 +302,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -325,10 +325,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -348,10 +348,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -365,10 +365,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -388,10 +388,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ │ │ └── • 1 Validation operation @@ -404,99 +404,99 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ VALIDATED → PUBLIC │ │ │ │ │ -│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ rule: "primary index swap" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} +│ │ │ │ └── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ -│ │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} +│ │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "primary index with new columns should exist before secondary indexes" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "index existence precedes index dependents" │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 5} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 5 (idx+)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 5} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "index existence precedes index dependents" │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ │ ├── • Precedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "primary index with new columns should exist before temp indexes" │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ │ PUBLIC → VALIDATED │ │ │ │ │ -│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ │ │ └── • 15 Mutation operations @@ -584,22 +584,22 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 6} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -619,19 +619,19 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -645,10 +645,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -668,10 +668,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -691,10 +691,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -708,10 +708,10 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -731,13 +731,13 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} +│ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ -│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 5} +│ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx+)} │ │ rule: "secondary index named before validation" │ │ │ └── • 1 Validation operation @@ -752,134 +752,134 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 5, ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 5 (idx+), ConstraintID: 4, TemporaryIndexID: 6, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 5} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 5 (idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 5 (idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: idx, IndexID: 5} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "idx", IndexID: 5 (idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 6 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 11 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 21 Mutation operations @@ -990,158 +990,158 @@ EXPLAIN (ddl, verbose) CREATE UNIQUE INDEX idx ON t(k); │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 6} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 6} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 6} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 6} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 6} + │ └── • IndexData:{DescID: 104 (t), IndexID: 6} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104, IndexID: 4} + │ ├── • SameStagePrecedence dependency from TRANSIENT_DROPPED IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 6, ConstraintID: 5, SourceIndexID: 3} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 6, ConstraintID: 5, SourceIndexID: 3 (t_pkey+)} │ rule: "index removed before garbage collection" │ ├── • 8 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • Column:{DescID: 104, ColumnID: 4} + │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ rule: "index removed before garbage collection" │ └── • 12 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index index c619663b4fee..7db415773d80 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index @@ -15,74 +15,74 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 6} +│ │ └── • IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} +│ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} +│ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 10 Mutation operations @@ -157,41 +157,41 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} +│ │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} +│ │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} +│ │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 6} +│ │ │ └── • IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} +│ │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} +│ │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} +│ │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} +│ │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -203,74 +203,74 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ ├── • 5 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 106, IndexID: 6} +│ │ └── • IndexData:{DescID: 106 (test), IndexID: 6 (test_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} +│ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} +│ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 3} +│ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 106, ColumnID: 3} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} +│ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 14 Mutation operations @@ -369,25 +369,25 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 106, IndexID: 7} +│ │ │ └── • IndexData:{DescID: 106 (test), IndexID: 7} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -407,22 +407,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -436,10 +436,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -459,10 +459,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -482,10 +482,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -499,10 +499,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -522,10 +522,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -540,78 +540,78 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106, Name: test_pkey, IndexID: 6} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 6} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 6} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 6 (test_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 6} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 6 (test_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: test_pkey, IndexID: 6} + │ │ └── • IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 6 (test_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 6, ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 6 (test_pkey+), ConstraintID: 7, TemporaryIndexID: 7, SourceIndexID: 4 (test_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 4 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ └── • IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 11 Mutation operations @@ -672,54 +672,54 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ └── • TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 7} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 7} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 7} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 7} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 7} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 7} │ │ rule: "dependents removed before index" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi-), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ └── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 8 Mutation operations @@ -769,79 +769,79 @@ EXPLAIN (ddl, verbose) ALTER TABLE t.test DROP pi; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 106, IndexID: 7} + │ └── • IndexData:{DescID: 106 (test), IndexID: 7} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106, IndexID: 7, ConstraintID: 8, SourceIndexID: 4} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 7, ConstraintID: 8, SourceIndexID: 4 (test_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi-), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi-), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 4} + │ └── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 4} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 4} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_1_of_7 index b4f6138dbb46..e6cb49e1b6a8 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_1_of_7 @@ -16,102 +16,102 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 2 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 106, ColumnID: 3} + │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ ABSENT → PUBLIC │ ├── • 9 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 14 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_2_of_7 index 8f58508d2fd5..854c8fa8dfd5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_2_of_7 @@ -16,87 +16,87 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -169,34 +169,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_3_of_7 index c2fa5a0e7e6d..2080eb9b3771 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_3_of_7 @@ -16,87 +16,87 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -169,34 +169,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_4_of_7 index 4400a6b487cf..12c74194fc79 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_4_of_7 @@ -16,87 +16,87 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -169,34 +169,34 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_5_of_7 index 6d1566f58ff1..73b6a62b6b21 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_5_of_7 @@ -16,75 +16,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -157,52 +157,52 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_6_of_7 index 0a7ec719912b..5a548961fd4b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_6_of_7 @@ -16,75 +16,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -157,52 +157,52 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_7_of_7 index 3a6b3350f543..4a310bdefb75 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_unique_index.rollback_7_of_7 @@ -16,75 +16,75 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 106, ColumnID: 3} + │ │ ├── • Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 106 (test), ColumnFamilyID: 0 (primary), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 106 (test), ColumnID: 3 (pi+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106, ColumnID: 3, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 106 (test), ColumnID: 3 (pi+), IndexID: 1 (test_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 106, Name: pi, ColumnID: 3} + │ │ └── • ColumnName:{DescID: 106 (test), Name: "pi", ColumnID: 3 (pi+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 13 Mutation operations @@ -157,52 +157,52 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: test_pkey, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 106 (test), Name: "test_pkey", IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 4} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 4 (test_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 4 (test_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 106, IndexID: 4} + │ ├── • IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 4, ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (test), IndexID: 4 (test_pkey-), ConstraintID: 5, TemporaryIndexID: 5, SourceIndexID: 1 (test_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 1 (k), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 5} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 2 (v), IndexID: 5} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 4, IndexID: 5} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (test), ColumnID: 4 (x), IndexID: 5} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 106, IndexID: 5} + │ └── • IndexData:{DescID: 106 (test), IndexID: 5} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106, IndexID: 4} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 106 (test), IndexID: 4 (test_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106, IndexID: 5, ConstraintID: 6, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 106 (test), IndexID: 5, ConstraintID: 6, SourceIndexID: 1 (test_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index index 967b9124834d..1e83a5bfb69c 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index @@ -12,59 +12,59 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 7 Mutation operations @@ -115,32 +115,32 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -152,59 +152,59 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -279,19 +279,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -311,16 +311,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -334,10 +334,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -357,10 +357,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -380,10 +380,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -397,10 +397,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -420,10 +420,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -438,90 +438,90 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 13 Mutation operations @@ -589,51 +589,51 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -673,79 +673,79 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_1_of_7 index 78940f3f0f7c..89f5f10f2d4d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_1_of_7 @@ -13,81 +13,81 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 3 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ VALIDATED → PUBLIC │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ - │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ rule: "index dependents exist before index becomes public" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 12 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_2_of_7 index 1bbe73812fc1..eace203d6670 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_2_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_3_of_7 index 297ec7f70f6a..02fd7bf4e23c 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_3_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_4_of_7 index 949ea8b6eb7b..edae5b40a521 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_4_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_5_of_7 index bb19a110cb4c..b1230e1c8d9b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_5_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_6_of_7 index d76ec2e63d25..0dcee8fb4a36 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_6_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_7_of_7 index 99057008e51d..e1dd676c4432 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_index.rollback_7_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index index f705e62bd920..b16807a8c66b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index @@ -12,59 +12,59 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 7 Mutation operations @@ -115,32 +115,32 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -152,59 +152,59 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -279,19 +279,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -311,16 +311,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -334,10 +334,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -357,10 +357,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -380,10 +380,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -397,10 +397,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -420,10 +420,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -438,90 +438,90 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 14 Mutation operations @@ -593,51 +593,51 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 7 Mutation operations @@ -677,79 +677,79 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 2 (t_j_idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_1_of_7 index 13dcd2fbfb15..25ca659c4a3e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_1_of_7 @@ -13,81 +13,81 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 3 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ VALIDATED → PUBLIC │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ - │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ rule: "index dependents exist before index becomes public" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 12 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_2_of_7 index 75c4f89cba27..e17a17598f27 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_2_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_3_of_7 index c39b19fe6ebd..f1f83a88fe9a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_3_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_4_of_7 index 45d107efb28c..1f6f00c21ffe 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_4_of_7 @@ -13,72 +13,72 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -132,28 +132,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_5_of_7 index 940caf8fee9b..9c90d6665425 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_5_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_6_of_7 index 7ebb3022c261..01c2c4f5f353 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_6_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_7_of_7 index 342075285de7..8019ec109e9a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_partial_index.rollback_7_of_7 @@ -13,66 +13,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_j_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_j_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_j_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_j_idx", IndexID: 2 (t_j_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 11 Mutation operations @@ -126,40 +126,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default index b378798e6157..60fc73ac638d 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default @@ -13,50 +13,50 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 105, IndexID: 2} +│ │ └── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 6 Mutation operations @@ -103,29 +103,29 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} +│ │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 105, IndexID: 2} +│ │ │ └── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} +│ │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -137,50 +137,50 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} +│ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 105, IndexID: 2} +│ │ └── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} +│ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 11 Mutation operations @@ -256,19 +256,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 105, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 4 Mutation operations @@ -291,16 +291,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -314,10 +314,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -340,10 +340,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -366,10 +366,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -383,10 +383,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 4 Mutation operations @@ -409,10 +409,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -427,60 +427,60 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ └── • IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ └── • IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ └── • IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 10 Mutation operations @@ -531,36 +531,36 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ └── • PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ VALIDATED → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ └── • 7 Mutation operations @@ -599,73 +599,73 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN b; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 105, ColumnID: 2} + │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ ├── • ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 1} + │ └── • IndexData:{DescID: 105 (t), IndexID: 1 (t_pkey-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ rule: "index removed before garbage collection" │ └── • 9 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_1_of_7 index 825dbd2d8631..467c438142c1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_1_of_7 @@ -14,66 +14,66 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 2 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 105, ColumnID: 2} + │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ ABSENT → PUBLIC │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index drop mutation visible before cleaning up index columns" │ └── • 11 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_2_of_7 index e7c96e5623bb..3cf9b29fba0b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_2_of_7 @@ -14,57 +14,57 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -114,28 +114,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_3_of_7 index 1789afc782fa..9f9a7aa1ac98 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_3_of_7 @@ -14,57 +14,57 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -114,28 +114,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_4_of_7 index cdab2ccbec4d..892b37b05ff1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_4_of_7 @@ -14,57 +14,57 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -114,28 +114,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_5_of_7 index 865949cfbe48..85dbed78fc59 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_5_of_7 @@ -14,51 +14,51 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -108,40 +108,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_6_of_7 index 6840ddd88ae3..80cdbab277d8 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_6_of_7 @@ -14,51 +14,51 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -108,40 +108,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_7_of_7 index 4c753fd5318d..e6c56393599b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_column_with_udf_default.rollback_7_of_7 @@ -14,51 +14,51 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 105 (t), ColumnID: 2 (b+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 105 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (b+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 105 (t), ColumnID: 2 (b+), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 105 (t), ColumnID: 2 (b+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ └── • ColumnName:{DescID: 105 (t), Name: "b", ColumnID: 2 (b+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ └── • 10 Mutation operations @@ -108,40 +108,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t), Name: "t_pkey", IndexID: 2 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 2 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 2} + │ ├── • IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t), IndexID: 2 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ ├── • TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t), ColumnID: 1 (i), IndexID: 3} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 3} + │ └── • IndexData:{DescID: 105 (t), IndexID: 3} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 105 (t), IndexID: 2 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105, IndexID: 3, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 105 (t), IndexID: 3, ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_function b/pkg/sql/schemachanger/testdata/explain_verbose/drop_function index e4f70ee4aa8b..af783070597b 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_function +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_function @@ -29,62 +29,62 @@ EXPLAIN (ddl, verbose) DROP FUNCTION f; │ │ │ ├── • 10 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Owner:{DescID: 109} +│ │ ├── • Owner:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 109, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 109, Name: root} +│ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Function:{DescID: 109} +│ │ ├── • Function:{DescID: 109 (f-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 109, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • FunctionName:{DescID: 109} +│ │ ├── • FunctionName:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionVolatility:{DescID: 109} +│ │ ├── • FunctionVolatility:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionLeakProof:{DescID: 109} +│ │ ├── • FunctionLeakProof:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionNullInputBehavior:{DescID: 109} +│ │ ├── • FunctionNullInputBehavior:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • FunctionBody:{DescID: 109} +│ │ └── • FunctionBody:{DescID: 109 (f-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ rule: "descriptor dropped before dependent element removal" │ │ │ └── • 11 Mutation operations @@ -145,34 +145,34 @@ EXPLAIN (ddl, verbose) DROP FUNCTION f; │ │ │ │ │ ├── • 10 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Owner:{DescID: 109} +│ │ │ ├── • Owner:{DescID: 109 (f-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 109, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 109, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Function:{DescID: 109} +│ │ │ ├── • Function:{DescID: 109 (f-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 109, ReferencedDescID: 101} +│ │ │ ├── • SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • FunctionName:{DescID: 109} +│ │ │ ├── • FunctionName:{DescID: 109 (f-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • FunctionVolatility:{DescID: 109} +│ │ │ ├── • FunctionVolatility:{DescID: 109 (f-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • FunctionLeakProof:{DescID: 109} +│ │ │ ├── • FunctionLeakProof:{DescID: 109 (f-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • FunctionNullInputBehavior:{DescID: 109} +│ │ │ ├── • FunctionNullInputBehavior:{DescID: 109 (f-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • FunctionBody:{DescID: 109} +│ │ │ └── • FunctionBody:{DescID: 109 (f-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -184,62 +184,62 @@ EXPLAIN (ddl, verbose) DROP FUNCTION f; │ │ │ ├── • 10 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Owner:{DescID: 109} +│ │ ├── • Owner:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 109, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 109, Name: root} +│ │ ├── • UserPrivileges:{DescID: 109 (f-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Function:{DescID: 109} +│ │ ├── • Function:{DescID: 109 (f-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 109, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • FunctionName:{DescID: 109} +│ │ ├── • FunctionName:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionVolatility:{DescID: 109} +│ │ ├── • FunctionVolatility:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionLeakProof:{DescID: 109} +│ │ ├── • FunctionLeakProof:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • FunctionNullInputBehavior:{DescID: 109} +│ │ ├── • FunctionNullInputBehavior:{DescID: 109 (f-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • FunctionBody:{DescID: 109} +│ │ └── • FunctionBody:{DescID: 109 (f-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from DROPPED Function:{DescID: 109} +│ │ └── • Precedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ rule: "descriptor dropped before dependent element removal" │ │ │ └── • 18 Mutation operations @@ -342,37 +342,37 @@ EXPLAIN (ddl, verbose) DROP FUNCTION f; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • Function:{DescID: 109} + │ └── • Function:{DescID: 109 (f-)} │ │ DROPPED → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT Owner:{DescID: 109} + │ ├── • Precedence dependency from ABSENT Owner:{DescID: 109 (f-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 109, Name: admin} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 109 (f-), Name: "admin"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 109, Name: root} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 109 (f-), Name: "root"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 109} + │ ├── • PreviousStagePrecedence dependency from DROPPED Function:{DescID: 109 (f-)} │ │ rule: "descriptor dropped in transaction before removal" │ │ - │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 109, ReferencedDescID: 101} + │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 109 (f-), ReferencedDescID: 101 (public)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 109} + │ ├── • Precedence dependency from ABSENT FunctionName:{DescID: 109 (f-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT FunctionVolatility:{DescID: 109} + │ ├── • Precedence dependency from ABSENT FunctionVolatility:{DescID: 109 (f-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT FunctionLeakProof:{DescID: 109} + │ ├── • Precedence dependency from ABSENT FunctionLeakProof:{DescID: 109 (f-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT FunctionNullInputBehavior:{DescID: 109} + │ ├── • Precedence dependency from ABSENT FunctionNullInputBehavior:{DescID: 109 (f-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 109} + │ └── • Precedence dependency from ABSENT FunctionBody:{DescID: 109 (f-)} │ rule: "non-data dependents removed before descriptor" │ └── • 8 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_hash_sharded_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_hash_sharded_index index a3c8bf0fab50..0986d7442195 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_hash_sharded_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_hash_sharded_index @@ -16,43 +16,43 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 6 Mutation operations @@ -89,22 +89,22 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} +│ │ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -116,43 +116,43 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ ├── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ └── • ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} +│ │ └── • ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} +│ │ └── • Precedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 8 Mutation operations @@ -206,67 +206,67 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 8 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} + │ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ - │ │ ├── • ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} + │ │ ├── • ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ │ VALIDATED → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ rule: "ColumnNotNull transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ rule: "index no longer public before index name" │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ └── • CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ └── • CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ VALIDATED → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104, IndexID: 0, ConstraintID: 2} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED CheckConstraint:{DescID: 104 (t), IndexID: 0, ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ │ rule: "CheckConstraint transitions to ABSENT uphold 2-version invariant: VALIDATED->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104, Name: check_crdb_internal_j_shard_16, ConstraintID: 2} + │ │ └── • Precedence dependency from ABSENT ConstraintWithoutIndexName:{DescID: 104 (t), Name: "check_crdb_internal_j_shard_16", ConstraintID: 2 (check_crdb_internal_j_shard_16-)} │ │ rule: "Constraint should be hidden before name" │ │ │ └── • 10 Mutation operations @@ -321,56 +321,56 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_j_shard_16, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_j_shard_16", ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104, ColumnID: 3, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 0} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_j_shard_16-), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_partial_expression_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_partial_expression_index index e2f1a425ca12..aaf28cbcca84 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_partial_expression_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_partial_expression_index @@ -13,25 +13,25 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 3 Mutation operations @@ -55,13 +55,13 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -73,25 +73,25 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 3 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 5 Mutation operations @@ -132,40 +132,40 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 8 Mutation operations @@ -210,50 +210,50 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (crdb_internal_idx_expr-), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ rule: "index removed before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_vanilla_index b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_vanilla_index index cc53060ff9d0..25590240b771 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_vanilla_index +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_vanilla_index @@ -13,10 +13,10 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 1 element transitioning toward ABSENT │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 1 Mutation operation @@ -31,7 +31,7 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward ABSENT │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -43,10 +43,10 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 1 element transitioning toward ABSENT │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 3 Mutation operations @@ -78,31 +78,31 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 6 Mutation operations @@ -139,25 +139,25 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "idx", IndexID: 2 (idx-)} │ │ rule: "dependents removed before index" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (idx-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (idx-)} │ rule: "index removed before garbage collection" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_with_materialized_view_dep b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_with_materialized_view_dep index 39147d2f38cd..048a43f01b0a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_with_materialized_view_dep +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_index_with_materialized_view_dep @@ -15,191 +15,191 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 24 elements transitioning toward ABSENT │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "dependent view no longer public before secondary index" │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} +│ │ ├── • Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (v3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • View:{DescID: 106} +│ │ ├── • View:{DescID: 106 (v3-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 1} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ └── • IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 21 Mutation operations @@ -301,76 +301,76 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ │ │ ├── • 24 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} +│ │ │ ├── • Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 106} +│ │ │ ├── • Owner:{DescID: 106 (v3-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • View:{DescID: 106} +│ │ │ ├── • View:{DescID: 106 (v3-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 101} +│ │ │ ├── • SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 106, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -382,266 +382,266 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 26 elements transitioning toward ABSENT │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "dependent view no longer public before secondary index" │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} +│ │ ├── • Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (v3-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (v3-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • View:{DescID: 106} +│ │ ├── • View:{DescID: 106 (v3-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 106, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED View:{DescID: 106} +│ │ │ └── • SameStagePrecedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 1} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 1 (j-), IndexID: 1 (v3_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: j, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 2} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 1 (v3_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 106, ColumnID: 2} +│ │ ├── • ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 106, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 1 (v3_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 106 (v3-), ColumnID: 1 (j-), IndexID: 1 (v3_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 1 (v3_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 1 (j-), IndexID: 1 (v3_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ └── • IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ ├── • Precedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 37 Mutation operations @@ -820,127 +820,127 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (v2), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 105, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 105 (v2), ColumnID: 3 (rowid), IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ ├── • IndexName:{DescID: 105, Name: idx, IndexID: 2} + │ │ ├── • IndexName:{DescID: 105 (v2), Name: "idx", IndexID: 2 (idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ rule: "index no longer public before index name" │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • View:{DescID: 106} + │ │ ├── • View:{DescID: 106 (v3-)} │ │ │ │ DROPPED → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ │ rule: "secondary index should be validated before dependent view can be absent" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106, Name: v3, ReferencedDescID: 100} + │ │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106 (v3-), Name: "v3", ReferencedDescID: 100 (defaultdb)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106} + │ │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106 (v3-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: admin} + │ │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "admin"} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: root} + │ │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (v3-), Name: "root"} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DROPPED View:{DescID: 106} + │ │ │ ├── • PreviousStagePrecedence dependency from DROPPED View:{DescID: 106 (v3-)} │ │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106, ReferencedDescID: 101} + │ │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 106 (v3-), ReferencedDescID: 101 (public)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} + │ │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 106 (v3-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106, ColumnID: 1} + │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106 (v3-), ColumnID: 1 (j-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: j, ColumnID: 1} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "j", ColumnID: 1 (j-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} + │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (j-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: rowid, ColumnID: 2} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "rowid", ColumnID: 2 (rowid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106, ColumnID: 2, IndexID: 0} + │ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 0} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106, ColumnID: 2} + │ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 106 (v3-), ColumnID: 2 (rowid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106, ColumnID: 4294967295} + │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106 (v3-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106, ColumnID: 4294967294} + │ │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 106 (v3-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106, Name: tableoid, ColumnID: 4294967294} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 106 (v3-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106 (v3-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 2 (rowid-), IndexID: 1 (v3_pkey-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106, ColumnID: 1, IndexID: 1} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 106 (v3-), ColumnID: 1 (j-), IndexID: 1 (v3_pkey-)} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106, Name: v3_pkey, IndexID: 1} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 106 (v3-), Name: "v3_pkey", IndexID: 1 (v3_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • IndexData:{DescID: 106, IndexID: 1} + │ │ ├── • IndexData:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 106 (v3-), IndexID: 1 (v3_pkey-), ConstraintID: 1} │ │ │ │ rule: "index removed before garbage collection" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 106, ReferencedDescID: 100} + │ │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 106 (v3-), ReferencedDescID: 100 (defaultdb)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • TableData:{DescID: 106, ReferencedDescID: 100} + │ │ └── • TableData:{DescID: 106 (v3-), ReferencedDescID: 100 (defaultdb)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT View:{DescID: 106} + │ │ └── • SameStagePrecedence dependency from ABSENT View:{DescID: 106 (v3-)} │ │ rule: "table removed right before garbage collection" │ │ │ └── • 8 Mutation operations @@ -991,28 +991,28 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ ├── • 2 elements transitioning toward ABSENT │ │ - │ ├── • SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (v2), ColumnID: 2 (j), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (v2), ColumnID: 3 (rowid), IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: idx, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexName:{DescID: 105 (v2), Name: "idx", IndexID: 2 (idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT View:{DescID: 106} + │ │ └── • Precedence dependency from ABSENT View:{DescID: 106 (v3-)} │ │ rule: "dependent view absent before secondary index" │ │ - │ └── • IndexData:{DescID: 105, IndexID: 2} + │ └── • IndexData:{DescID: 105 (v2), IndexID: 2 (idx-)} │ │ PUBLIC → ABSENT │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 105, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 105 (v2), IndexID: 2 (idx-)} │ rule: "index removed before garbage collection" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_1_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_1_of_7 index d39ac705cf73..aff1e9cde345 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_1_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_1_of_7 @@ -14,135 +14,135 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 1 of 7; │ ├── • 7 elements transitioning toward PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "ensure columns are in increasing order" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ ABSENT → PUBLIC │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • Column:{DescID: 104, ColumnID: 4} + │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ WRITE_ONLY → PUBLIC │ │ │ - │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ rule: "ensure columns are in increasing order" │ │ │ - │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ rule: "ensure columns are in increasing order" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ rule: "column dependents exist before column becomes public" │ │ - │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ VALIDATED → PUBLIC │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ - │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ rule: "index dependents exist before index becomes public" │ │ - │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ ABSENT → PUBLIC │ │ - │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ ABSENT → PUBLIC │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 18 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_2_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_2_of_7 index 55cc740c3255..bb2acf495336 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_2_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_2_of_7 @@ -14,126 +14,126 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -211,28 +211,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 2 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_3_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_3_of_7 index c2f06cbf2a19..91d364845bf5 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_3_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_3_of_7 @@ -14,126 +14,126 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: BACKFILL_ONLY->DELETE_ONLY" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -211,28 +211,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 3 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_4_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_4_of_7 index 2b33378ab129..844769872404 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_4_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_4_of_7 @@ -14,126 +14,126 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -211,28 +211,28 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 4 of 7; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 5 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_5_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_5_of_7 index 0cbad799a2b2..7479fc30a908 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_5_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_5_of_7 @@ -14,120 +14,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -205,40 +205,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 5 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_6_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_6_of_7 index 6a34605262f7..71c3b21119da 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_6_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_6_of_7 @@ -14,120 +14,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ MERGE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: MERGE_ONLY->WRITE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -205,40 +205,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 6 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_7_of_7 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_7_of_7 index 3f66443d087a..b6429772e914 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_7_of_7 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.rollback_7_of_7 @@ -14,120 +14,120 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ │ │ ├── • 7 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 2 (j+), IndexID: 1 (t_pkey+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j+)} │ │ │ │ rule: "ensure columns are in increasing order" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "Column transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->PUBLIC" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • Precedence dependency from PUBLIC ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "column dependents exist before column becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from PUBLIC ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ │ rule: "column dependents exist before column becomes public" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k+), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx+)} │ │ │ │ rule: "SecondaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ │ └── • Precedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr+)} │ │ ABSENT → PUBLIC │ │ │ ├── • 4 elements transitioning toward ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ └── • 17 Mutation operations @@ -205,40 +205,40 @@ EXPLAIN (ddl, verbose) rollback at post-commit stage 7 of 7; │ ├── • 4 elements transitioning toward ABSENT │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 3} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 4} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 3} + │ │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey-)} │ │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ │ - │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ rule: "index removed before garbage collection" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey-), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey+)} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ │ DELETE_ONLY → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ rule: "dependents removed before index" │ │ - │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey+)} │ rule: "TemporaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ └── • 6 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_1_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_1_of_2 index e3ac6c45b502..cb53c3172ed7 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_1_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_1_of_2 @@ -12,83 +12,83 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 11 Mutation operations @@ -160,44 +160,44 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ PUBLIC → ABSENT │ │ │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ VALIDATED → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -209,83 +209,83 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 4 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → BACKFILL_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ └── • IndexData:{DescID: 104, IndexID: 3} +│ │ └── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ ABSENT → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ ABSENT → PUBLIC │ │ │ -│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "temp index existence precedes index dependents" │ │ │ ├── • 5 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ └── • 15 Mutation operations @@ -381,22 +381,22 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ │ -│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ -│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ │ -│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} +│ │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ │ └── • 3 Mutation operations @@ -416,19 +416,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -442,10 +442,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -465,10 +465,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -488,10 +488,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -505,10 +505,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -528,10 +528,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -546,111 +546,111 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ ├── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ rule: "primary index named right before index becomes public" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 3} + │ │ │ └── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 3 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ └── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ ├── • 9 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 16 Mutation operations @@ -734,88 +734,88 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ ├── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 4} + │ │ └── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 4} │ │ rule: "dependents removed before index" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 9 Mutation operations @@ -866,76 +866,76 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN j CASCADE; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4, ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 5 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ rule: "index removed before garbage collection" │ └── • 7 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_2_of_2 b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_2_of_2 index e31908645164..f96a3385d22e 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_2_of_2 +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_multiple_columns_separate_statements.statement_2_of_2 @@ -13,19 +13,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ ├── • 2 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ └── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} +│ │ └── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 2 Mutation operations @@ -45,44 +45,44 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ BACKFILL_ONLY → ABSENT │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -94,86 +94,86 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ ├── • 3 elements transitioning toward PUBLIC │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index existence precedes index dependents" │ │ │ -│ │ ├── • IndexData:{DescID: 104, IndexID: 3} +│ │ ├── • IndexData:{DescID: 104 (t), IndexID: 3 (t_pkey+)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • SameStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index data exists as soon as index accepts backfills" │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → BACKFILL_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: ABSENT->BACKFILL_ONLY" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ -│ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index existence precedes index dependents" │ │ │ -│ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ ABSENT → DELETE_ONLY │ │ │ -│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: ABSENT->DELETE_ONLY" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 3} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 3} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: k, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 2} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ -│ │ ├── • Column:{DescID: 104, ColumnID: 4} +│ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104, ColumnID: 4} +│ │ │ ├── • PreviousStagePrecedence dependency from PUBLIC Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: PUBLIC->WRITE_ONLY" │ │ │ │ -│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "secondary indexes containing column as key reach write-only before column" │ │ │ -│ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} +│ │ │ └── • PreviousStagePrecedence dependency from PUBLIC SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ -│ │ ├── • ColumnName:{DescID: 104, Name: j, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ └── • ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} +│ │ └── • ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} +│ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ rule: "column no longer public before dependents" │ │ │ └── • 15 Mutation operations @@ -269,19 +269,19 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ │ -│ │ │ ├── • IndexData:{DescID: 104, IndexID: 4} +│ │ │ ├── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ │ ABSENT → PUBLIC │ │ │ │ │ -│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ │ └── • SameStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "temp index data exists as soon as temp index accepts writes" │ │ │ │ -│ │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → WRITE_ONLY │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ rule: "index-column added to index before temp index receives writes" │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: DELETE_ONLY->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -301,16 +301,16 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILL_ONLY → BACKFILLED │ │ │ │ -│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} +│ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index-column added to index before index is backfilled" │ │ │ │ -│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ ├── • PreviousStagePrecedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILL_ONLY->BACKFILLED" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "temp index is WRITE_ONLY before backfill" │ │ │ │ │ └── • 1 Backfill operation @@ -324,10 +324,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ BACKFILLED → DELETE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from BACKFILLED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: BACKFILLED->DELETE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -347,10 +347,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ DELETE_ONLY → MERGE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: DELETE_ONLY->MERGE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -370,10 +370,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGE_ONLY → MERGED │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGE_ONLY->MERGED" │ │ │ │ │ └── • 1 Backfill operation @@ -387,10 +387,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ │ -│ │ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ MERGED → WRITE_ONLY │ │ │ │ -│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ │ └── • PreviousStagePrecedence dependency from MERGED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: MERGED->WRITE_ONLY" │ │ │ │ │ └── • 3 Mutation operations @@ -410,10 +410,10 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ ├── • 1 element transitioning toward PUBLIC │ │ │ -│ │ └── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → VALIDATED │ │ │ -│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} +│ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: WRITE_ONLY->VALIDATED" │ │ │ └── • 1 Validation operation @@ -428,111 +428,111 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ ├── • 2 elements transitioning toward PUBLIC │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ ├── • SameStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ rule: "primary index swap" │ │ │ │ - │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 3} + │ │ │ ├── • Precedence dependency from PUBLIC IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 3 (t_pkey+)} │ │ │ │ rule: "index dependents exist before index becomes public" │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ │ ├── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ │ │ rule: "PrimaryIndex transitions to PUBLIC uphold 2-version invariant: VALIDATED->PUBLIC" │ │ │ │ - │ │ │ └── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ │ └── • SameStagePrecedence dependency from PUBLIC IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ rule: "index dependents exist before index becomes public" │ │ │ rule: "primary index named right before index becomes public" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 3} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 3 (t_pkey+)} │ │ │ ABSENT → PUBLIC │ │ │ - │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104, IndexID: 3, ConstraintID: 2, TemporaryIndexID: 4, SourceIndexID: 1} + │ │ └── • Precedence dependency from BACKFILL_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 3 (t_pkey+), ConstraintID: 2, TemporaryIndexID: 4 (crdb_internal_index_4_name_placeholder), SourceIndexID: 1 (t_pkey-)} │ │ rule: "index existence precedes index dependents" │ │ │ ├── • 2 elements transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ │ PUBLIC → TRANSIENT_ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ │ └── • Precedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ WRITE_ONLY → TRANSIENT_DELETE_ONLY │ │ │ - │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: WRITE_ONLY->TRANSIENT_DELETE_ONLY" │ │ │ ├── • 10 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 2} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ WRITE_ONLY → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • PreviousStagePrecedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: WRITE_ONLY->DELETE_ONLY" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from PUBLIC PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: PUBLIC->VALIDATED" │ │ │ - │ │ ├── • IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ ├── • IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • Precedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "index no longer public before index name" │ │ │ - │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from VALIDATED SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 16 Mutation operations @@ -614,88 +614,88 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ │ │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ │ - │ │ └── • TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ │ TRANSIENT_DELETE_ONLY → TRANSIENT_ABSENT │ │ │ - │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 4} + │ │ ├── • Precedence dependency from TRANSIENT_ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ │ └── • PreviousStagePrecedence dependency from TRANSIENT_DELETE_ONLY TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ │ rule: "TemporaryIndex transitions to TRANSIENT_ABSENT uphold 2-version invariant: TRANSIENT_DELETE_ONLY->TRANSIENT_ABSENT" │ │ │ ├── • 7 elements transitioning toward ABSENT │ │ │ - │ │ ├── • Column:{DescID: 104, ColumnID: 4} + │ │ ├── • Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ DELETE_ONLY → ABSENT │ │ │ │ - │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ │ - │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ - │ │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ │ ├── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ │ rule: "indexes containing column reach absent before column" │ │ │ │ - │ │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: crdb_internal_idx_expr, ColumnID: 4} + │ │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "crdb_internal_idx_expr", ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4} + │ │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 4} + │ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ - │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ - │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ - │ │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → DELETE_ONLY │ │ │ │ - │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ │ └── • PreviousStagePrecedence dependency from VALIDATED PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: VALIDATED->WRITE_ONLY" │ │ │ - │ │ └── • SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 4, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 4 (crdb_internal_idx_expr-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "SecondaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_expr_k_idx, IndexID: 2} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_expr_k_idx", IndexID: 2 (t_expr_k_idx-)} │ │ rule: "dependents removed before index" │ │ │ └── • 9 Mutation operations @@ -746,131 +746,131 @@ EXPLAIN (ddl, verbose) ALTER TABLE t DROP COLUMN k CASCADE; │ ├── • 1 element transitioning toward TRANSIENT_ABSENT │ │ - │ └── • IndexData:{DescID: 104, IndexID: 4} + │ └── • IndexData:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder)} │ │ PUBLIC → TRANSIENT_ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 2} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104, IndexID: 4, ConstraintID: 3, SourceIndexID: 1} + │ └── • Precedence dependency from TRANSIENT_ABSENT TemporaryIndex:{DescID: 104 (t), IndexID: 4 (crdb_internal_index_4_name_placeholder), ConstraintID: 3, SourceIndexID: 1 (t_pkey-)} │ rule: "index removed before garbage collection" │ ├── • 9 elements transitioning toward ABSENT │ │ - │ ├── • Column:{DescID: 104, ColumnID: 3} + │ ├── • Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: k, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "k", ColumnID: 3 (k-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 2} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 2 (t_expr_k_idx-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ rule: "indexes containing column reach absent before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 3} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 3 (k-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ - │ │ └── • SameStagePrecedence dependency from ABSENT ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ │ └── • SameStagePrecedence dependency from ABSENT ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ rule: "column type dependents removed right before column type" │ │ - │ ├── • ColumnDefaultExpression:{DescID: 104, ColumnID: 3} + │ ├── • ColumnDefaultExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • ColumnOnUpdateExpression:{DescID: 104, ColumnID: 3} + │ ├── • ColumnOnUpdateExpression:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 3} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 3 (k-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • Column:{DescID: 104, ColumnID: 2} + │ ├── • Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ │ rule: "Column transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ rule: "dependents removed before column" │ │ │ rule: "column type removed right before column when not dropping relation" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "indexes containing column reach absent before column" │ │ │ - │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104, Name: j, ColumnID: 2} + │ │ └── • Precedence dependency from ABSENT ColumnName:{DescID: 104 (t), Name: "j", ColumnID: 2 (j-)} │ │ rule: "dependents removed before column" │ │ - │ ├── • ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2} + │ ├── • ColumnType:{DescID: 104 (t), ColumnFamilyID: 0 (primary), ColumnID: 2 (j-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104, ColumnID: 2} + │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 104 (t), ColumnID: 2 (j-)} │ │ rule: "column no longer public before dependents" │ │ - │ ├── • PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ ├── • PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ DELETE_ONLY → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 1 (i), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 2 (j-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 104 (t), ColumnID: 3 (k-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ ├── • PreviousStagePrecedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "PrimaryIndex transitions to ABSENT uphold 2-version invariant: DELETE_ONLY->ABSENT" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 104 (t), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "dependents removed before index" │ │ - │ ├── • IndexData:{DescID: 104, IndexID: 1} + │ ├── • IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104, IndexID: 1, ConstraintID: 1} + │ │ └── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 104 (t), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index removed before garbage collection" │ │ - │ └── • IndexData:{DescID: 104, IndexID: 2} + │ └── • IndexData:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ │ PUBLIC → ABSENT │ │ - │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104, IndexID: 1} + │ ├── • SameStagePrecedence dependency from DROPPED IndexData:{DescID: 104 (t), IndexID: 1 (t_pkey-)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104, IndexID: 2, ConstraintID: 0} + │ └── • Precedence dependency from ABSENT SecondaryIndex:{DescID: 104 (t), IndexID: 2 (t_expr_k_idx-)} │ rule: "index removed before garbage collection" │ └── • 10 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_schema b/pkg/sql/schemachanger/testdata/explain_verbose/drop_schema index c734eaa5da0d..e3a29f801125 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_schema +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_schema @@ -13,37 +13,37 @@ EXPLAIN (ddl, verbose) DROP SCHEMA db.sc; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (sc-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Schema:{DescID: 106} +│ │ ├── • Schema:{DescID: 106 (sc-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ └── • SchemaParent:{DescID: 106, ReferencedDescID: 104} +│ │ └── • SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 106} +│ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ rule: "descriptor dropped before dependent element removal" │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ @@ -81,22 +81,22 @@ EXPLAIN (ddl, verbose) DROP SCHEMA db.sc; │ │ │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 106} +│ │ │ ├── • Owner:{DescID: 106 (sc-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Schema:{DescID: 106} +│ │ │ ├── • Schema:{DescID: 106 (sc-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ └── • SchemaParent:{DescID: 106, ReferencedDescID: 104} +│ │ │ └── • SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -108,37 +108,37 @@ EXPLAIN (ddl, verbose) DROP SCHEMA db.sc; │ │ │ ├── • 6 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 106} +│ │ ├── • Owner:{DescID: 106 (sc-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 106, Name: root} +│ │ ├── • UserPrivileges:{DescID: 106 (sc-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106} +│ │ │ └── • Precedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Schema:{DescID: 106} +│ │ ├── • Schema:{DescID: 106 (sc-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ └── • SchemaParent:{DescID: 106, ReferencedDescID: 104} +│ │ └── • SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 106} +│ │ └── • SameStagePrecedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ rule: "descriptor dropped before dependent element removal" │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ @@ -198,25 +198,25 @@ EXPLAIN (ddl, verbose) DROP SCHEMA db.sc; │ ├── • 1 element transitioning toward ABSENT │ │ - │ └── • Schema:{DescID: 106} + │ └── • Schema:{DescID: 106 (sc-)} │ │ DROPPED → ABSENT │ │ - │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106, Name: sc, ReferencedDescID: 104} + │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 106 (sc-), Name: "sc", ReferencedDescID: 104 (db)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106} + │ ├── • Precedence dependency from ABSENT Owner:{DescID: 106 (sc-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: admin} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "admin"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106, Name: root} + │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 106 (sc-), Name: "root"} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • PreviousStagePrecedence dependency from DROPPED Schema:{DescID: 106} + │ ├── • PreviousStagePrecedence dependency from DROPPED Schema:{DescID: 106 (sc-)} │ │ rule: "descriptor dropped in transaction before removal" │ │ - │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 106, ReferencedDescID: 104} + │ └── • Precedence dependency from ABSENT SchemaParent:{DescID: 106 (sc-), ReferencedDescID: 104 (db)} │ rule: "non-data dependents removed before descriptor" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table index 698f94693f64..79e321537b4a 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table @@ -16,218 +16,218 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ │ ├── • 27 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 107} +│ │ ├── • Owner:{DescID: 107 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 107} +│ │ ├── • Table:{DescID: 107 (t-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 106} +│ │ ├── • SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableComment:{DescID: 107, Comment: t has a comment} +│ │ ├── • TableComment:{DescID: 107 (t-), Comment: "t has a comment"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 1} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: k, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 2} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: v, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 3} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ ├── • ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ └── • IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 22 Mutation operations @@ -332,85 +332,85 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ │ │ │ ├── • 27 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} +│ │ │ ├── • Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 107} +│ │ │ ├── • Owner:{DescID: 107 (t-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Table:{DescID: 107} +│ │ │ ├── • Table:{DescID: 107 (t-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 106} +│ │ │ ├── • SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • TableComment:{DescID: 107, Comment: t has a comment} +│ │ │ ├── • TableComment:{DescID: 107 (t-), Comment: "t has a comment"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 107, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 107, Name: k, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 107, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 107, Name: v, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 107, ColumnID: 3} +│ │ │ ├── • Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} +│ │ │ ├── • ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 107, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 107, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -422,317 +422,317 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ │ ├── • 30 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} +│ │ ├── • Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 107} +│ │ ├── • Owner:{DescID: 107 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 107, Name: root} +│ │ ├── • UserPrivileges:{DescID: 107 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 107} +│ │ ├── • Table:{DescID: 107 (t-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 107, ReferencedDescID: 106} +│ │ ├── • SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • TableComment:{DescID: 107, Comment: t has a comment} +│ │ ├── • TableComment:{DescID: 107 (t-), Comment: "t has a comment"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 1} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: k, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 1 (k-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: k, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 2} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: v, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 2, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 2 (v-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: v, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 3} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 3, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 107, ColumnID: 3} +│ │ ├── • ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 107, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 107, ColumnID: 3, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 3} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • IndexColumn:{DescID: 107, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 107 (t-), ColumnID: 1 (k-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • IndexColumn:{DescID: 107, ColumnID: 2, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 107 (t-), ColumnID: 2 (v-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 3, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 1 (k-), IndexID: 1 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 2, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 2 (v-), IndexID: 1 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ └── • IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 40 Mutation operations @@ -924,112 +924,112 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • Table:{DescID: 107} + │ ├── • Table:{DescID: 107 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 107, Name: t, ReferencedDescID: 104} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 107 (t-), Name: "t", ReferencedDescID: 104 (db)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 107} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 107 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 107 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 107} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 107 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107, ReferencedDescID: 106} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 107 (t-), ReferencedDescID: 106 (sc)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT TableComment:{DescID: 107, Comment: t has a comment} + │ │ ├── • Precedence dependency from ABSENT TableComment:{DescID: 107 (t-), Comment: "t has a comment"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 107 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107 (t-), ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: k, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "k", ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (k-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107 (t-), ColumnID: 2 (v-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: v, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "v", ColumnID: 2 (v-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (v-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: rowid, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "rowid", ColumnID: 3 (rowid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 3 (rowid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 107, ColumnID: 3, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107, ColumnID: 3} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 107 (t-), ColumnID: 3 (rowid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 107 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107, Name: tableoid, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 107 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 3, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 3 (rowid-), IndexID: 1 (t_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 1 (k-), IndexID: 1 (t_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 107 (t-), ColumnID: 2 (v-), IndexID: 1 (t_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 107, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 107 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 107, IndexID: 1} + │ ├── • IndexData:{DescID: 107 (t-), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 107, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 107 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 107, ReferencedDescID: 104} + │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 107 (t-), ReferencedDescID: 104 (db)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • TableData:{DescID: 107, ReferencedDescID: 104} + │ └── • TableData:{DescID: 107 (t-), ReferencedDescID: 104 (db)} │ │ PUBLIC → ABSENT │ │ - │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 107} + │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 107 (t-)} │ rule: "table removed right before garbage collection" │ └── • 4 Mutation operations diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default index 6ceabc30efca..de475fcc38d1 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default @@ -13,185 +13,185 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ │ ├── • 23 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} +│ │ ├── • Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 105} +│ │ ├── • Table:{DescID: 105 (t-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 1} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: i, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent constraint" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ ├── • ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → WRITE_ONLY │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → VALIDATED │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "relation dropped before dependent index" │ │ │ -│ │ └── • IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 20 Mutation operations @@ -290,73 +290,73 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ │ │ │ ├── • 23 elements transitioning toward ABSENT │ │ │ │ -│ │ │ ├── • Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} +│ │ │ ├── • Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Owner:{DescID: 105} +│ │ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Table:{DescID: 105} +│ │ │ ├── • Table:{DescID: 105 (t-)} │ │ │ │ DROPPED → PUBLIC │ │ │ │ -│ │ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} +│ │ │ ├── • ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 105, ColumnID: 1} +│ │ │ ├── • Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 105, Name: i, ColumnID: 1} +│ │ │ ├── • ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} +│ │ │ ├── • ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ │ ├── • Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ │ ├── • ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ │ ├── • ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 105, ColumnID: 4294967295} +│ │ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • Column:{DescID: 105, ColumnID: 4294967294} +│ │ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ WRITE_ONLY → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ ABSENT → PUBLIC │ │ │ │ -│ │ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ │ ├── • PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ VALIDATED → PUBLIC │ │ │ │ -│ │ │ └── • IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} +│ │ │ └── • IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ ABSENT → PUBLIC │ │ │ │ │ └── • 1 Mutation operation @@ -368,260 +368,260 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ │ ├── • 25 elements transitioning toward ABSENT │ │ │ -│ │ ├── • Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} +│ │ ├── • Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Owner:{DescID: 105} +│ │ ├── • Owner:{DescID: 105 (t-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: admin} +│ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • UserPrivileges:{DescID: 105, Name: root} +│ │ ├── • UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ ├── • Table:{DescID: 105} +│ │ ├── • Table:{DescID: 105 (t-)} │ │ │ PUBLIC → DROPPED │ │ │ -│ │ ├── • SchemaChild:{DescID: 105, ReferencedDescID: 101} +│ │ ├── • SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 105} +│ │ │ └── • SameStagePrecedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ rule: "descriptor dropped right before removing back-reference in its parent descriptor" │ │ │ -│ │ ├── • ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} +│ │ ├── • ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "column type removed before column family" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column type removed before column family" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 1} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} +│ │ │ ├── • SameStagePrecedence dependency from ABSENT ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ │ rule: "column constraint removed right before column reaches delete only" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: i, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} +│ │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: i, ColumnID: 1} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} +│ │ ├── • ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent constraint" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 2} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: b, ColumnID: 2} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ │ └── • SameStagePrecedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ rule: "column type dependents removed right before column type" │ │ │ -│ │ ├── • ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} +│ │ ├── • ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 4294967295} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967295} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • Column:{DescID: 105, ColumnID: 4294967294} +│ │ ├── • Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent column" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} +│ │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ rule: "dependents removed before column" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "dependents removed before column" │ │ │ -│ │ ├── • ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} +│ │ ├── • ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ ├── • ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 4294967294} +│ │ │ └── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "column no longer public before dependents" │ │ │ -│ │ ├── • IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 1} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} +│ │ ├── • IndexColumn:{DescID: 105 (t-), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ │ -│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105, ColumnID: 2} +│ │ │ ├── • Precedence dependency from WRITE_ONLY Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ │ rule: "column no longer public before dependents" │ │ │ │ -│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ │ └── • Precedence dependency from DELETE_ONLY PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index drop mutation visible before cleaning up index columns" │ │ │ -│ │ ├── • PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ ├── • PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ │ rule: "relation dropped before dependent index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 1 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} +│ │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ │ rule: "dependents removed before index" │ │ │ │ -│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} +│ │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ rule: "dependents removed before index" │ │ │ -│ │ └── • IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} +│ │ └── • IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ -│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped before dependent element removal" │ │ │ -│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} +│ │ └── • Precedence dependency from VALIDATED PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ rule: "index no longer public before dependents, excluding columns" │ │ │ └── • 36 Mutation operations @@ -797,97 +797,97 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ ├── • 3 elements transitioning toward ABSENT │ │ - │ ├── • Table:{DescID: 105} + │ ├── • Table:{DescID: 105 (t-)} │ │ │ DROPPED → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 105, Name: t, ReferencedDescID: 100} + │ │ ├── • Precedence dependency from ABSENT Namespace:{DescID: 105 (t-), Name: "t", ReferencedDescID: 100 (defaultdb)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105} + │ │ ├── • Precedence dependency from ABSENT Owner:{DescID: 105 (t-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: admin} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "admin"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105, Name: root} + │ │ ├── • Precedence dependency from ABSENT UserPrivileges:{DescID: 105 (t-), Name: "root"} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 105} + │ │ ├── • PreviousStagePrecedence dependency from DROPPED Table:{DescID: 105 (t-)} │ │ │ rule: "descriptor dropped in transaction before removal" │ │ │ - │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105, ReferencedDescID: 101} + │ │ ├── • Precedence dependency from ABSENT SchemaChild:{DescID: 105 (t-), ReferencedDescID: 101 (public)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnFamily:{DescID: 105 (t-), Name: "primary", ColumnFamilyID: 0 (primary-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105 (t-), ColumnID: 1 (i-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: i, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "i", ColumnID: 1 (i-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 1 (i-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 105, ColumnID: 1, IndexID: 0} + │ │ ├── • Precedence dependency from ABSENT ColumnNotNull:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 0} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105 (t-), ColumnID: 2 (b-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: b, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "b", ColumnID: 2 (b-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 2 (b-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105, ColumnID: 2, ReferencedFunctionIDs: [104]} + │ │ ├── • Precedence dependency from ABSENT ColumnDefaultExpression:{DescID: 105 (t-), ColumnID: 2 (b-), ReferencedFunctionIDs: [104 (#104)]} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105 (t-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: crdb_internal_mvcc_timestamp, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "crdb_internal_mvcc_timestamp", ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967295 (crdb_internal_mvcc_timestamp-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT Column:{DescID: 105 (t-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105, Name: tableoid, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnName:{DescID: 105 (t-), Name: "tableoid", ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} + │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105 (t-), ColumnFamilyID: 0 (primary-), ColumnID: 4294967294 (tableoid-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 1, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 1 (i-), IndexID: 1 (t_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105, ColumnID: 2, IndexID: 1} + │ │ ├── • Precedence dependency from ABSENT IndexColumn:{DescID: 105 (t-), ColumnID: 2 (b-), IndexID: 1 (t_pkey-)} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "non-data dependents removed before descriptor" │ │ │ - │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105, Name: t_pkey, IndexID: 1} + │ │ └── • Precedence dependency from ABSENT IndexName:{DescID: 105 (t-), Name: "t_pkey", IndexID: 1 (t_pkey-)} │ │ rule: "non-data dependents removed before descriptor" │ │ - │ ├── • IndexData:{DescID: 105, IndexID: 1} + │ ├── • IndexData:{DescID: 105 (t-), IndexID: 1 (t_pkey-)} │ │ │ PUBLIC → ABSENT │ │ │ - │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105, IndexID: 1, ConstraintID: 1} + │ │ ├── • Precedence dependency from ABSENT PrimaryIndex:{DescID: 105 (t-), IndexID: 1 (t_pkey-), ConstraintID: 1} │ │ │ rule: "index removed before garbage collection" │ │ │ - │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 105, ReferencedDescID: 100} + │ │ └── • SameStagePrecedence dependency from DROPPED TableData:{DescID: 105 (t-), ReferencedDescID: 100 (defaultdb)} │ │ rule: "schedule all GC jobs for a descriptor in the same stage" │ │ - │ └── • TableData:{DescID: 105, ReferencedDescID: 100} + │ └── • TableData:{DescID: 105 (t-), ReferencedDescID: 100 (defaultdb)} │ │ PUBLIC → ABSENT │ │ - │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 105} + │ └── • SameStagePrecedence dependency from ABSENT Table:{DescID: 105 (t-)} │ rule: "table removed right before garbage collection" │ └── • 5 Mutation operations diff --git a/pkg/sql/sem/catid/index_id_set.go b/pkg/sql/sem/catid/index_id_set.go index 9a6330f09e2d..98cf31f80f7b 100644 --- a/pkg/sql/sem/catid/index_id_set.go +++ b/pkg/sql/sem/catid/index_id_set.go @@ -27,10 +27,10 @@ func MakeIndexIDSet(vals ...IndexID) IndexSet { } // Add adds an index to the set. No-op if the index is already in the set. -func (s *IndexSet) Add(col IndexID) { s.set.Add(int(col)) } +func (s *IndexSet) Add(indexID IndexID) { s.set.Add(int(indexID)) } // Contains returns true if the set contains the index. -func (s IndexSet) Contains(col IndexID) bool { return s.set.Contains(int(col)) } +func (s IndexSet) Contains(indexID IndexID) bool { return s.set.Contains(int(indexID)) } // Empty returns true if the set is empty. func (s IndexSet) Empty() bool { return s.set.Empty() }