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 78bbabddcb45..b4e64e1517a8 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_database_multiregion_primary_region @@ -74,7 +74,6 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── RemoveBackReferenceInTypes {"BackReferencedDescriptorID":108} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -97,6 +96,7 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"admin"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} + │ ├── AssertColumnFamilyIsRemoved {"TableID":108} │ ├── MarkDescriptorAsDropped {"DescriptorID":104} │ ├── DrainDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":105,"Name":"public"}} │ ├── NotImplementedForPublicObjects {"DescID":105,"ElementType":"scpb.Owner"} @@ -234,7 +234,6 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── RemoveBackReferenceInTypes {"BackReferencedDescriptorID":108} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -257,6 +256,7 @@ Schema change plan for DROP DATABASE ‹multi_region_test_db› CASCADE; │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"admin"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} + │ ├── AssertColumnFamilyIsRemoved {"TableID":108} │ ├── RemoveColumnNotNull {"ColumnID":1,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":108} diff --git a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion index b88f724c4e0c..fb6b838ca30c 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion @@ -42,7 +42,6 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.TablePartit..."} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -62,7 +61,8 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"admin"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} │ ├── RemoveDroppedColumnType {"ColumnID":2,"TableID":108} - │ └── UpdateTableBackReferencesInTypes {"BackReferencedTableID":108} + │ ├── UpdateTableBackReferencesInTypes {"BackReferencedTableID":108} + │ └── AssertColumnFamilyIsRemoved {"TableID":108} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 27 elements transitioning toward ABSENT @@ -130,7 +130,6 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.TablePartit..."} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -155,6 +154,7 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── RemoveColumnNotNull {"ColumnID":2,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":108} + │ ├── AssertColumnFamilyIsRemoved {"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":1,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":108} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967295,"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 72243ccf86c9..082fe55545c6 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region +++ b/pkg/ccl/schemachangerccl/testdata/explain/drop_table_multiregion_primary_region @@ -35,7 +35,6 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── RemoveBackReferenceInTypes {"BackReferencedDescriptorID":108} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -48,7 +47,8 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── DrainDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":108,"Name":"table_regional_b...","SchemaID":105}} │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"admin"} - │ └── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} + │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} + │ └── AssertColumnFamilyIsRemoved {"TableID":108} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 20 elements transitioning toward ABSENT @@ -101,7 +101,6 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── MarkDescriptorAsDropped {"DescriptorID":108} │ ├── RemoveObjectParent {"ObjectID":108,"ParentSchemaID":105} │ ├── RemoveBackReferenceInTypes {"BackReferencedDescriptorID":108} - │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":108} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":108} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":108} @@ -115,6 +114,7 @@ Schema change plan for DROP TABLE ‹multi_region_test_db›.‹public›.‹tab │ ├── NotImplementedForPublicObjects {"DescID":108,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"admin"} │ ├── RemoveUserPrivileges {"DescriptorID":108,"User":"root"} + │ ├── AssertColumnFamilyIsRemoved {"TableID":108} │ ├── RemoveColumnNotNull {"ColumnID":1,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":108} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":108} 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 253301e0f1bc..872e05b70737 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 @@ -271,8 +271,17 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -407,10 +416,6 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ TypeIDs: │ │ - 106 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -503,6 +508,9 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ DescriptorID: 108 │ │ User: root │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 108 +│ │ │ ├── • MarkDescriptorAsDropped │ │ DescriptorID: 104 │ │ @@ -997,8 +1005,17 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -1181,10 +1198,6 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ TypeIDs: │ │ - 106 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -1277,6 +1290,9 @@ EXPLAIN (ddl, verbose) DROP DATABASE multi_region_test_db CASCADE; │ │ DescriptorID: 108 │ │ User: root │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 108 +│ │ │ ├── • RemoveColumnNotNull │ │ ColumnID: 1 │ │ TableID: 108 diff --git a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion index 7fb4e8ad4765..cf68b26eac69 100644 --- a/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion +++ b/pkg/ccl/schemachangerccl/testdata/explain_verbose/drop_table_multiregion @@ -64,8 +64,20 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -224,10 +236,6 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ DescID: 108 │ │ ElementType: scpb.TablePartitioning │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -314,11 +322,14 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ColumnID: 2 │ │ TableID: 108 │ │ -│ └── • UpdateTableBackReferencesInTypes -│ BackReferencedTableID: 108 -│ TypeIDs: -│ - 106 -│ - 107 +│ ├── • UpdateTableBackReferencesInTypes +│ │ BackReferencedTableID: 108 +│ │ TypeIDs: +│ │ - 106 +│ │ - 107 +│ │ +│ └── • AssertColumnFamilyIsRemoved +│ TableID: 108 │ ├── • PreCommitPhase │ │ @@ -465,8 +476,20 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ReferencedTypeIDs: [106 107], ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -712,10 +735,6 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ DescID: 108 │ │ ElementType: scpb.TablePartitioning │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -824,6 +843,9 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ColumnID: 4294967294 │ │ TableID: 108 │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 108 +│ │ │ ├── • MakeWriteOnlyColumnDeleteOnly │ │ ColumnID: 1 │ │ TableID: 108 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 07f7b5005556..95131beebdcb 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 @@ -58,8 +58,17 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -168,10 +177,6 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ TypeIDs: │ │ - 106 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -227,9 +232,12 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ DescriptorID: 108 │ │ User: admin │ │ -│ └── • RemoveUserPrivileges -│ DescriptorID: 108 -│ User: root +│ ├── • RemoveUserPrivileges +│ │ DescriptorID: 108 +│ │ User: root +│ │ +│ └── • AssertColumnFamilyIsRemoved +│ TableID: 108 │ ├── • PreCommitPhase │ │ @@ -349,8 +357,17 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ ├── • ColumnFamily:{DescID: 108, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 108} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 108} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 108, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 108, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -507,10 +524,6 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ TypeIDs: │ │ - 106 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 108 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 108 @@ -570,6 +583,9 @@ EXPLAIN (ddl, verbose) DROP TABLE multi_region_test_db.public.table_regional_by_ │ │ DescriptorID: 108 │ │ User: root │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 108 +│ │ │ ├── • RemoveColumnNotNull │ │ ColumnID: 1 │ │ TableID: 108 diff --git a/pkg/cli/testdata/declarative-rules/deprules b/pkg/cli/testdata/declarative-rules/deprules index 484bc1470e84..ca58a6943285 100644 --- a/pkg/cli/testdata/declarative-rules/deprules +++ b/pkg/cli/testdata/declarative-rules/deprules @@ -1747,6 +1747,19 @@ deprules - $column-type-Node[CurrentStatus] = ABSENT - joinTargetNode($dependent, $dependent-Target, $dependent-Node) - joinTargetNode($column-type, $column-type-Target, $column-type-Node) +- name: column type removed before column family + from: column-type-Node + kind: Precedence + to: column-family-Node + query: + - $column-type[Type] = '*scpb.ColumnType' + - $column-family[Type] = '*scpb.ColumnFamily' + - joinOnColumnFamilyID($column-type, $column-family, $table-id, $family-id) + - toAbsent($column-type-Target, $column-family-Target) + - $column-type-Node[CurrentStatus] = ABSENT + - $column-family-Node[CurrentStatus] = ABSENT + - joinTargetNode($column-type, $column-type-Target, $column-type-Node) + - joinTargetNode($column-family, $column-family-Target, $column-family-Node) - name: column type removed right before column when not dropping relation from: column-type-Node kind: SameStagePrecedence diff --git a/pkg/sql/schemachanger/scexec/scmutationexec/column.go b/pkg/sql/schemachanger/scexec/scmutationexec/column.go index d38d7b27a35c..035ea6f3ff3c 100644 --- a/pkg/sql/schemachanger/scexec/scmutationexec/column.go +++ b/pkg/sql/schemachanger/scexec/scmutationexec/column.go @@ -235,6 +235,22 @@ func (i *immediateVisitor) AddColumnFamily(ctx context.Context, op scop.AddColum return nil } +func (i *immediateVisitor) AssertColumnFamilyIsRemoved( + ctx context.Context, op scop.AssertColumnFamilyIsRemoved, +) error { + tbl, err := i.checkOutTable(ctx, op.TableID) + if err != nil || tbl.Dropped() { + return err + } + for idx := range tbl.Families { + if tbl.Families[idx].ID == op.FamilyID { + return errors.AssertionFailedf("column family was leaked during schema change %v", + tbl.Families[idx]) + } + } + return nil +} + func (i *immediateVisitor) SetColumnName(ctx context.Context, op scop.SetColumnName) error { tbl, err := i.checkOutTable(ctx, op.TableID) if err != nil || tbl.Dropped() { diff --git a/pkg/sql/schemachanger/scexec/scmutationexec/scmutationexec.go b/pkg/sql/schemachanger/scexec/scmutationexec/scmutationexec.go index 72a54b5ffcd6..b0ce655a2b55 100644 --- a/pkg/sql/schemachanger/scexec/scmutationexec/scmutationexec.go +++ b/pkg/sql/schemachanger/scexec/scmutationexec/scmutationexec.go @@ -57,9 +57,9 @@ func (i *immediateVisitor) NotImplementedForPublicObjects( ctx context.Context, op scop.NotImplementedForPublicObjects, ) error { desc := i.MaybeGetCheckedOutDescriptor(op.DescID) - if desc.Dropped() { + if desc == nil || desc.Dropped() { return nil } - return errors.AssertionFailedf("not implemented operation was hit " + - "unexpectedly, no dropped descriptor was found.") + return errors.AssertionFailedf("not implemented operation was hit "+ + "unexpectedly, no dropped descriptor was found. %v", op.ElementType) } diff --git a/pkg/sql/schemachanger/scop/immediate_mutation.go b/pkg/sql/schemachanger/scop/immediate_mutation.go index d3f6e2a73673..9f080a255f04 100644 --- a/pkg/sql/schemachanger/scop/immediate_mutation.go +++ b/pkg/sql/schemachanger/scop/immediate_mutation.go @@ -429,6 +429,16 @@ type AddColumnFamily struct { Name string } +// AssertColumnFamilyIsRemoved asserts that a column family is removed, which +// is used as a validation to make sure that the family the element reaches +// absent. The column family cleaned up with the last ColumnType element +// referencing it. +type AssertColumnFamilyIsRemoved struct { + immediateMutationOp + TableID descpb.ID + FamilyID descpb.FamilyID +} + // AddColumnDefaultExpression adds a DEFAULT expression to a column. type AddColumnDefaultExpression struct { immediateMutationOp diff --git a/pkg/sql/schemachanger/scplan/internal/opgen/opgen_column_family.go b/pkg/sql/schemachanger/scplan/internal/opgen/opgen_column_family.go index 389a0ffe28ec..08024eddfd93 100644 --- a/pkg/sql/schemachanger/scplan/internal/opgen/opgen_column_family.go +++ b/pkg/sql/schemachanger/scplan/internal/opgen/opgen_column_family.go @@ -11,6 +11,7 @@ package opgen import ( + "github.com/cockroachdb/cockroach/pkg/clusterversion" "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scop" "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scpb" ) @@ -34,8 +35,22 @@ func init() { scpb.Status_PUBLIC, to(scpb.Status_ABSENT, revertible(false), - emit(func(this *scpb.ColumnFamily) *scop.NotImplementedForPublicObjects { - return notImplementedForPublicObjects(this) + emit(func(this *scpb.ColumnFamily, md *opGenContext) *scop.AssertColumnFamilyIsRemoved { + // Use stricter criteria on 23.1, which will guarantee that the + // column family is cleaned up first using the column type element. + // The only purpose this operation serves is to make sure that this + // when the element reaches absent the column family has actually + // been removed. This would have been done via the last column + // type element referencing it. + if md.ActiveVersion.IsActive(clusterversion.V23_1) { + return &scop.AssertColumnFamilyIsRemoved{ + TableID: this.TableID, + FamilyID: this.FamilyID, + } + } + // We would have used NotImplemented before, but that will be an + // assertion now, so just return no-ops. + return nil }), ), ), diff --git a/pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_column.go b/pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_column.go index 8bf945c81425..2dee6e7c55fd 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_column.go +++ b/pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_column.go @@ -48,6 +48,20 @@ func init() { } }, ) + + registerDepRule( + "column type removed before column family", + scgraph.Precedence, + "column-type", "column-family", + func(from, to NodeVars) rel.Clauses { + return rel.Clauses{ + from.Type((*scpb.ColumnType)(nil)), + to.Type((*scpb.ColumnFamily)(nil)), + JoinOnColumnFamilyID(from, to, "table-id", "family-id"), + StatusesToAbsent(from, scpb.Status_ABSENT, to, scpb.Status_ABSENT), + } + }, + ) } // Special cases of the above. diff --git a/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/deprules b/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/deprules index 4c23e43216aa..1e4de40aafa4 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/deprules +++ b/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/deprules @@ -1744,6 +1744,19 @@ deprules - $column-type-Node[CurrentStatus] = ABSENT - joinTargetNode($dependent, $dependent-Target, $dependent-Node) - joinTargetNode($column-type, $column-type-Target, $column-type-Node) +- name: column type removed before column family + from: column-type-Node + kind: Precedence + to: column-family-Node + query: + - $column-type[Type] = '*scpb.ColumnType' + - $column-family[Type] = '*scpb.ColumnFamily' + - joinOnColumnFamilyID($column-type, $column-family, $table-id, $family-id) + - toAbsent($column-type-Target, $column-family-Target) + - $column-type-Node[CurrentStatus] = ABSENT + - $column-family-Node[CurrentStatus] = ABSENT + - joinTargetNode($column-type, $column-type-Target, $column-type-Node) + - joinTargetNode($column-family, $column-family-Target, $column-family-Node) - name: column type removed right before column when not dropping relation from: column-type-Node kind: SameStagePrecedence @@ -5092,6 +5105,19 @@ deprules - $column-type-Node[CurrentStatus] = ABSENT - joinTargetNode($dependent, $dependent-Target, $dependent-Node) - joinTargetNode($column-type, $column-type-Target, $column-type-Node) +- name: column type removed before column family + from: column-type-Node + kind: Precedence + to: column-family-Node + query: + - $column-type[Type] = '*scpb.ColumnType' + - $column-family[Type] = '*scpb.ColumnFamily' + - joinOnColumnFamilyID($column-type, $column-family, $table-id, $family-id) + - toAbsent($column-type-Target, $column-family-Target) + - $column-type-Node[CurrentStatus] = ABSENT + - $column-family-Node[CurrentStatus] = ABSENT + - joinTargetNode($column-type, $column-type-Target, $column-type-Node) + - joinTargetNode($column-family, $column-family-Target, $column-family-Node) - name: column type removed right before column when not dropping relation from: column-type-Node kind: SameStagePrecedence diff --git a/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/oprules b/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/oprules index 7d714a421ac0..23c3d5227f23 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/oprules +++ b/pkg/sql/schemachanger/scplan/internal/rules/current/testdata/oprules @@ -18,6 +18,10 @@ descriptorIsNotBeingDropped-23.1($element): - joinTarget($descriptor, $descriptor-Target) - joinOnDescID($descriptor, $element, $id) - $descriptor-Target[TargetStatus] = ABSENT +joinOnColumnFamilyID($a, $b, $desc-id, $family-id): + - joinOnDescID($a, $b, $desc-id) + - $a[ColumnFamilyID] = $family-id + - $b[ColumnFamilyID] = $family-id joinOnColumnID($a, $b, $desc-id, $col-id): - joinOnDescID($a, $b, $desc-id) - $a[ColumnID] = $col-id diff --git a/pkg/sql/schemachanger/scplan/internal/rules/helpers.go b/pkg/sql/schemachanger/scplan/internal/rules/helpers.go index ef2a9591f259..65959d84dc66 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/helpers.go +++ b/pkg/sql/schemachanger/scplan/internal/rules/helpers.go @@ -111,6 +111,11 @@ func JoinOnColumnID(a, b NodeVars, relationIDVar, columnIDVar rel.Var) rel.Claus return joinOnColumnIDUntyped(a.El, b.El, relationIDVar, columnIDVar) } +// JoinOnColumnFamilyID joins elements on column ID. +func JoinOnColumnFamilyID(a, b NodeVars, relationIDVar, columnFamilyIDVar rel.Var) rel.Clause { + return joinOnColumnFamilyIDUntyped(a.El, b.El, relationIDVar, columnFamilyIDVar) +} + // JoinOnIndexID joins elements on index ID. func JoinOnIndexID(a, b NodeVars, relationIDVar, indexIDVar rel.Var) rel.Clause { return joinOnIndexIDUntyped(a.El, b.El, relationIDVar, indexIDVar) @@ -206,6 +211,16 @@ var ( } }, ) + joinOnColumnFamilyIDUntyped = screl.Schema.Def4( + "joinOnColumnFamilyID", "a", "b", "desc-id", "family-id", func( + a, b, descID, familyID rel.Var, + ) rel.Clauses { + return rel.Clauses{ + JoinOnDescIDUntyped(a, b, descID), + familyID.Entities(screl.ColumnFamilyID, a, b), + } + }, + ) joinOnConstraintIDUntyped = screl.Schema.Def4( "joinOnConstraintID", "a", "b", "desc-id", "constraint-id", func( a, b, descID, constraintID rel.Var, diff --git a/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/deprules b/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/deprules index a1cbe0142b2e..0692d61fdb5e 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/deprules +++ b/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/deprules @@ -25,6 +25,10 @@ fromHasPublicStatusIfFromIsTableAndToIsRowLevelTTL($fromTarget, $fromEl, $toEl): - $n[Type] = '*screl.Node' - $n[Target] = $fromTarget - nodeHasNoPublicStatus($n) +joinOnColumnFamilyID($a, $b, $desc-id, $family-id): + - joinOnDescID($a, $b, $desc-id) + - $a[ColumnFamilyID] = $family-id + - $b[ColumnFamilyID] = $family-id joinOnColumnID($a, $b, $desc-id, $col-id): - joinOnDescID($a, $b, $desc-id) - $a[ColumnID] = $col-id diff --git a/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/oprules b/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/oprules index 9a2331cd6e52..b07d54c683f5 100644 --- a/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/oprules +++ b/pkg/sql/schemachanger/scplan/internal/rules/release_22_2/testdata/oprules @@ -25,6 +25,10 @@ fromHasPublicStatusIfFromIsTableAndToIsRowLevelTTL($fromTarget, $fromEl, $toEl): - $n[Type] = '*screl.Node' - $n[Target] = $fromTarget - nodeHasNoPublicStatus($n) +joinOnColumnFamilyID($a, $b, $desc-id, $family-id): + - joinOnDescID($a, $b, $desc-id) + - $a[ColumnFamilyID] = $family-id + - $b[ColumnFamilyID] = $family-id joinOnColumnID($a, $b, $desc-id, $col-id): - joinOnDescID($a, $b, $desc-id) - $a[ColumnID] = $col-id diff --git a/pkg/sql/schemachanger/scplan/testdata/drop_database b/pkg/sql/schemachanger/scplan/testdata/drop_database index f996f84899a8..431e8e464f49 100644 --- a/pkg/sql/schemachanger/scplan/testdata/drop_database +++ b/pkg/sql/schemachanger/scplan/testdata/drop_database @@ -224,9 +224,6 @@ StatementPhase stage 1 of 1 with 169 MutationType ops *scop.RemoveObjectParent ObjectID: 110 ParentSchemaID: 105 - *scop.NotImplementedForPublicObjects - DescID: 110 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 110 @@ -292,9 +289,6 @@ StatementPhase stage 1 of 1 with 169 MutationType ops ParentSchemaID: 106 *scop.RemoveTableComment TableID: 109 - *scop.NotImplementedForPublicObjects - DescID: 109 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 109 @@ -718,6 +712,8 @@ StatementPhase stage 1 of 1 with 169 MutationType ops DescriptorID: 110 Name: t1 SchemaID: 105 + *scop.AssertColumnFamilyIsRemoved + TableID: 110 *scop.DrainDescriptorName Namespace: DatabaseID: 104 @@ -730,6 +726,8 @@ StatementPhase stage 1 of 1 with 169 MutationType ops DescriptorID: 109 Name: t1 SchemaID: 106 + *scop.AssertColumnFamilyIsRemoved + TableID: 109 *scop.DrainDescriptorName Namespace: DatabaseID: 104 @@ -1196,9 +1194,6 @@ PreCommitPhase stage 2 of 2 with 257 MutationType ops *scop.RemoveObjectParent ObjectID: 110 ParentSchemaID: 105 - *scop.NotImplementedForPublicObjects - DescID: 110 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 110 @@ -1264,9 +1259,6 @@ PreCommitPhase stage 2 of 2 with 257 MutationType ops ParentSchemaID: 106 *scop.RemoveTableComment TableID: 109 - *scop.NotImplementedForPublicObjects - DescID: 109 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 109 @@ -1782,6 +1774,8 @@ PreCommitPhase stage 2 of 2 with 257 MutationType ops DescriptorID: 110 Name: t1 SchemaID: 105 + *scop.AssertColumnFamilyIsRemoved + TableID: 110 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 110 @@ -1806,6 +1800,8 @@ PreCommitPhase stage 2 of 2 with 257 MutationType ops DescriptorID: 109 Name: t1 SchemaID: 106 + *scop.AssertColumnFamilyIsRemoved + TableID: 109 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 109 @@ -2928,6 +2924,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 109, ColumnID: 1}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2936,6 +2936,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 109, ColumnID: 2}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2944,6 +2948,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 109, ColumnID: 3}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2952,6 +2960,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 109, ColumnID: 4294967294}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2960,6 +2972,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 109, ColumnID: 4294967295}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2968,6 +2984,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 110, ColumnID: 1}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] + to: [ColumnFamily:{DescID: 110, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] to: [Table:{DescID: 110}, ABSENT] kind: Precedence @@ -2976,6 +2996,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 110, ColumnID: 2}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] + to: [ColumnFamily:{DescID: 110, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] to: [Table:{DescID: 110}, ABSENT] kind: Precedence @@ -2984,6 +3008,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 110, ColumnID: 3}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] + to: [ColumnFamily:{DescID: 110, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] to: [Table:{DescID: 110}, ABSENT] kind: Precedence @@ -2992,6 +3020,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 110, ColumnID: 4294967294}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] + to: [ColumnFamily:{DescID: 110, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] to: [Table:{DescID: 110}, ABSENT] kind: Precedence @@ -3000,6 +3032,10 @@ DROP DATABASE db1 CASCADE to: [Column:{DescID: 110, ColumnID: 4294967295}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] + to: [ColumnFamily:{DescID: 110, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 110, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] to: [Table:{DescID: 110}, ABSENT] kind: Precedence diff --git a/pkg/sql/schemachanger/scplan/testdata/drop_index b/pkg/sql/schemachanger/scplan/testdata/drop_index index cfb29f080268..4e3cbc3c2003 100644 --- a/pkg/sql/schemachanger/scplan/testdata/drop_index +++ b/pkg/sql/schemachanger/scplan/testdata/drop_index @@ -1172,9 +1172,6 @@ StatementPhase stage 1 of 1 with 21 MutationType ops *scop.RemoveObjectParent ObjectID: 107 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 107 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 107 @@ -1234,6 +1231,8 @@ StatementPhase stage 1 of 1 with 21 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 107 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 107 PreCommitPhase stage 1 of 2 with 1 MutationType op transitions: [[SecondaryIndex:{DescID: 106, IndexID: 2, ConstraintID: 0}, ABSENT], VALIDATED] -> PUBLIC @@ -1301,9 +1300,6 @@ PreCommitPhase stage 2 of 2 with 37 MutationType ops *scop.RemoveObjectParent ObjectID: 107 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 107 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 107 @@ -1375,6 +1371,8 @@ PreCommitPhase stage 2 of 2 with 37 MutationType ops *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 4294967294 TableID: 107 + *scop.AssertColumnFamilyIsRemoved + TableID: 107 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 2 TableID: 107 diff --git a/pkg/sql/schemachanger/scplan/testdata/drop_owned_by b/pkg/sql/schemachanger/scplan/testdata/drop_owned_by index 710344d683ba..8e387dc60574 100644 --- a/pkg/sql/schemachanger/scplan/testdata/drop_owned_by +++ b/pkg/sql/schemachanger/scplan/testdata/drop_owned_by @@ -156,9 +156,6 @@ StatementPhase stage 1 of 1 with 108 MutationType ops *scop.RemoveObjectParent ObjectID: 109 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 109 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 109 @@ -222,9 +219,6 @@ StatementPhase stage 1 of 1 with 108 MutationType ops *scop.RemoveObjectParent ObjectID: 108 ParentSchemaID: 105 - *scop.NotImplementedForPublicObjects - DescID: 108 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 108 @@ -509,6 +503,10 @@ StatementPhase stage 1 of 1 with 108 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 105 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 109 + *scop.AssertColumnFamilyIsRemoved + TableID: 108 PreCommitPhase stage 1 of 2 with 1 MutationType op transitions: [[UserPrivileges:{DescID: 100, Name: r}, ABSENT], ABSENT] -> PUBLIC @@ -779,9 +777,6 @@ PreCommitPhase stage 2 of 2 with 166 MutationType ops *scop.RemoveObjectParent ObjectID: 109 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 109 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 109 @@ -845,9 +840,6 @@ PreCommitPhase stage 2 of 2 with 166 MutationType ops *scop.RemoveObjectParent ObjectID: 108 ParentSchemaID: 105 - *scop.NotImplementedForPublicObjects - DescID: 108 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 108 @@ -1183,6 +1175,8 @@ PreCommitPhase stage 2 of 2 with 166 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 105 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 109 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 109 @@ -1195,6 +1189,8 @@ PreCommitPhase stage 2 of 2 with 166 MutationType ops *scop.MakeWriteOnlyIndexDeleteOnly IndexID: 1 TableID: 109 + *scop.AssertColumnFamilyIsRemoved + TableID: 108 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 108 diff --git a/pkg/sql/schemachanger/scplan/testdata/drop_schema b/pkg/sql/schemachanger/scplan/testdata/drop_schema index 0a252a26c1f7..6df235e179fb 100644 --- a/pkg/sql/schemachanger/scplan/testdata/drop_schema +++ b/pkg/sql/schemachanger/scplan/testdata/drop_schema @@ -595,6 +595,10 @@ DROP SCHEMA defaultdb.SC1 CASCADE to: [Column:{DescID: 106, ColumnID: 1}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] + to: [ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] to: [Table:{DescID: 106}, ABSENT] kind: Precedence @@ -603,6 +607,10 @@ DROP SCHEMA defaultdb.SC1 CASCADE to: [Column:{DescID: 106, ColumnID: 2}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] + to: [ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] to: [Table:{DescID: 106}, ABSENT] kind: Precedence @@ -611,6 +619,10 @@ DROP SCHEMA defaultdb.SC1 CASCADE to: [Column:{DescID: 106, ColumnID: 3}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] + to: [ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 3}, ABSENT] to: [Table:{DescID: 106}, ABSENT] kind: Precedence @@ -619,6 +631,10 @@ DROP SCHEMA defaultdb.SC1 CASCADE to: [Column:{DescID: 106, ColumnID: 4294967294}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] + to: [ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] to: [Table:{DescID: 106}, ABSENT] kind: Precedence @@ -627,6 +643,10 @@ DROP SCHEMA defaultdb.SC1 CASCADE to: [Column:{DescID: 106, ColumnID: 4294967295}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] + to: [ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] to: [Table:{DescID: 106}, ABSENT] kind: Precedence @@ -1859,9 +1879,6 @@ StatementPhase stage 1 of 1 with 127 MutationType ops ParentSchemaID: 104 *scop.RemoveTableComment TableID: 106 - *scop.NotImplementedForPublicObjects - DescID: 106 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 106 @@ -2282,6 +2299,8 @@ StatementPhase stage 1 of 1 with 127 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 104 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 106 PreCommitPhase stage 1 of 2 with 1 MutationType op transitions: [[Namespace:{DescID: 104, Name: sc1, ReferencedDescID: 100}, ABSENT], ABSENT] -> PUBLIC @@ -2595,9 +2614,6 @@ PreCommitPhase stage 2 of 2 with 195 MutationType ops ParentSchemaID: 104 *scop.RemoveTableComment TableID: 106 - *scop.NotImplementedForPublicObjects - DescID: 106 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 106 @@ -3093,6 +3109,8 @@ PreCommitPhase stage 2 of 2 with 195 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 104 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 106 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 106 diff --git a/pkg/sql/schemachanger/scplan/testdata/drop_table b/pkg/sql/schemachanger/scplan/testdata/drop_table index f5fa677d89b5..4997384a4447 100644 --- a/pkg/sql/schemachanger/scplan/testdata/drop_table +++ b/pkg/sql/schemachanger/scplan/testdata/drop_table @@ -397,9 +397,6 @@ PreCommitPhase stage 2 of 2 with 127 MutationType ops ParentSchemaID: 101 *scop.RemoveTableComment TableID: 109 - *scop.NotImplementedForPublicObjects - DescID: 109 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 109 @@ -567,6 +564,8 @@ PreCommitPhase stage 2 of 2 with 127 MutationType ops *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 4294967294 TableID: 109 + *scop.AssertColumnFamilyIsRemoved + TableID: 109 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 1 TableID: 109 @@ -1156,6 +1155,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 1}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1164,6 +1167,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 2}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1172,6 +1179,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 4294967294}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1180,6 +1191,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 4294967295}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1188,6 +1203,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 4}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 4}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1196,6 +1215,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 5}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 5}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 5}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1204,6 +1227,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 6}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 6}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ColumnFamilyID: 0, ColumnID: 6}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -1212,6 +1239,10 @@ DROP TABLE defaultdb.shipments CASCADE; to: [Column:{DescID: 109, ColumnID: 3}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 109, ReferencedTypeIDs: [107 108], ColumnFamilyID: 0, ColumnID: 3}, ABSENT] + to: [ColumnFamily:{DescID: 109, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 109, ReferencedTypeIDs: [107 108], ColumnFamilyID: 0, ColumnID: 3}, ABSENT] to: [Table:{DescID: 109}, ABSENT] kind: Precedence @@ -2062,9 +2093,6 @@ PostCommitNonRevertiblePhase stage 1 of 2 with 47 MutationType ops *scop.RemoveObjectParent ObjectID: 104 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 104 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 104 @@ -2121,6 +2149,8 @@ PostCommitNonRevertiblePhase stage 1 of 2 with 47 MutationType ops *scop.RemoveUserPrivileges DescriptorID: 104 User: root + *scop.AssertColumnFamilyIsRemoved + TableID: 104 *scop.RemoveColumnNotNull ColumnID: 1 TableID: 104 @@ -2353,6 +2383,10 @@ DROP TABLE defaultdb.customers CASCADE; to: [Column:{DescID: 104, ColumnID: 1}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] + to: [ColumnFamily:{DescID: 104, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 1}, ABSENT] to: [Table:{DescID: 104}, ABSENT] kind: Precedence @@ -2361,6 +2395,10 @@ DROP TABLE defaultdb.customers CASCADE; to: [Column:{DescID: 104, ColumnID: 2}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] + to: [ColumnFamily:{DescID: 104, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 2}, ABSENT] to: [Table:{DescID: 104}, ABSENT] kind: Precedence @@ -2369,6 +2407,10 @@ DROP TABLE defaultdb.customers CASCADE; to: [Column:{DescID: 104, ColumnID: 4294967294}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] + to: [ColumnFamily:{DescID: 104, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4294967294}, ABSENT] to: [Table:{DescID: 104}, ABSENT] kind: Precedence @@ -2377,6 +2419,10 @@ DROP TABLE defaultdb.customers CASCADE; to: [Column:{DescID: 104, ColumnID: 4294967295}, ABSENT] kind: Precedence rule: dependents removed before column +- from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] + to: [ColumnFamily:{DescID: 104, Name: primary, ColumnFamilyID: 0}, ABSENT] + kind: Precedence + rule: column type removed before column family - from: [ColumnType:{DescID: 104, ColumnFamilyID: 0, ColumnID: 4294967295}, ABSENT] to: [Table:{DescID: 104}, ABSENT] kind: Precedence @@ -2766,9 +2812,6 @@ PreCommitPhase stage 2 of 2 with 59 MutationType ops *scop.RemoveObjectParent ObjectID: 115 ParentSchemaID: 101 - *scop.NotImplementedForPublicObjects - DescID: 115 - ElementType: scpb.ColumnFamily *scop.MakePublicColumnWriteOnly ColumnID: 1 TableID: 115 @@ -2869,6 +2912,8 @@ PreCommitPhase stage 2 of 2 with 59 MutationType ops *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 4294967294 TableID: 115 + *scop.AssertColumnFamilyIsRemoved + TableID: 115 *scop.MakeWriteOnlyColumnDeleteOnly ColumnID: 2 TableID: 115 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 6bdc68c2839d..c08ddba3ba41 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 @@ -39,7 +39,6 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveBackReferencesInRelations {"BackReferencedID":106} │ ├── RemoveObjectParent {"ObjectID":106,"ParentSchemaID":101} - │ ├── NotImplementedForPublicObjects {"DescID":106,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":106} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":106} │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":106} @@ -56,7 +55,8 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx │ ├── DrainDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":106,"Name":"v3","SchemaID":101}} │ ├── NotImplementedForPublicObjects {"DescID":106,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":106,"User":"admin"} - │ └── RemoveUserPrivileges {"DescriptorID":106,"User":"root"} + │ ├── RemoveUserPrivileges {"DescriptorID":106,"User":"root"} + │ └── AssertColumnFamilyIsRemoved {"TableID":106} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 24 elements transitioning toward ABSENT @@ -118,7 +118,6 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx │ ├── MarkDescriptorAsDropped {"DescriptorID":106} │ ├── RemoveBackReferencesInRelations {"BackReferencedID":106} │ ├── RemoveObjectParent {"ObjectID":106,"ParentSchemaID":101} - │ ├── NotImplementedForPublicObjects {"DescID":106,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":106} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":106} │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":106} @@ -140,6 +139,7 @@ Schema change plan for DROP INDEX ‹defaultdb›.‹public›.‹v2›@‹idx │ ├── RemoveColumnNotNull {"ColumnID":2,"TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":106} + │ ├── AssertColumnFamilyIsRemoved {"TableID":106} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":106} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967295,"TableID":106} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967294,"TableID":106} diff --git a/pkg/sql/schemachanger/testdata/explain/drop_table b/pkg/sql/schemachanger/testdata/explain/drop_table index 719e93d9a2d4..bfdaa0586009 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_table +++ b/pkg/sql/schemachanger/testdata/explain/drop_table @@ -43,7 +43,6 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; │ ├── MarkDescriptorAsDropped {"DescriptorID":107} │ ├── RemoveObjectParent {"ObjectID":107,"ParentSchemaID":106} │ ├── RemoveTableComment {"TableID":107} - │ ├── NotImplementedForPublicObjects {"DescID":107,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":107} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":107} │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":107} @@ -61,7 +60,8 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; │ ├── DrainDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"t","SchemaID":106}} │ ├── NotImplementedForPublicObjects {"DescID":107,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":107,"User":"admin"} - │ └── RemoveUserPrivileges {"DescriptorID":107,"User":"root"} + │ ├── RemoveUserPrivileges {"DescriptorID":107,"User":"root"} + │ └── AssertColumnFamilyIsRemoved {"TableID":107} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 27 elements transitioning toward ABSENT @@ -130,7 +130,6 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; │ ├── MarkDescriptorAsDropped {"DescriptorID":107} │ ├── RemoveObjectParent {"ObjectID":107,"ParentSchemaID":106} │ ├── RemoveTableComment {"TableID":107} - │ ├── NotImplementedForPublicObjects {"DescID":107,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":107} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":107} │ ├── MakePublicColumnWriteOnly {"ColumnID":2,"TableID":107} @@ -154,6 +153,7 @@ Schema change plan for DROP TABLE ‹db›.‹sc›.‹t›; │ ├── RemoveColumnNotNull {"ColumnID":3,"TableID":107} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":107} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":107} + │ ├── AssertColumnFamilyIsRemoved {"TableID":107} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":3,"TableID":107} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967295,"TableID":107} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967294,"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 1e4f7ec849b3..0b93e4b9d214 100644 --- a/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default +++ b/pkg/sql/schemachanger/testdata/explain/drop_table_udf_default @@ -35,7 +35,6 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; │ └── 20 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":105} │ ├── RemoveObjectParent {"ObjectID":105,"ParentSchemaID":101} - │ ├── NotImplementedForPublicObjects {"DescID":105,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":105} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":105} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":105} @@ -52,7 +51,8 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; │ ├── DrainDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":105,"Name":"t","SchemaID":101}} │ ├── NotImplementedForPublicObjects {"DescID":105,"ElementType":"scpb.Owner"} │ ├── RemoveUserPrivileges {"DescriptorID":105,"User":"admin"} - │ └── RemoveUserPrivileges {"DescriptorID":105,"User":"root"} + │ ├── RemoveUserPrivileges {"DescriptorID":105,"User":"root"} + │ └── AssertColumnFamilyIsRemoved {"TableID":105} ├── PreCommitPhase │ ├── Stage 1 of 2 in PreCommitPhase │ │ ├── 23 elements transitioning toward ABSENT @@ -111,7 +111,6 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; │ └── 36 Mutation operations │ ├── MarkDescriptorAsDropped {"DescriptorID":105} │ ├── RemoveObjectParent {"ObjectID":105,"ParentSchemaID":101} - │ ├── NotImplementedForPublicObjects {"DescID":105,"ElementType":"scpb.ColumnFamil..."} │ ├── MakePublicColumnWriteOnly {"ColumnID":1,"TableID":105} │ ├── SetColumnName {"ColumnID":1,"Name":"crdb_internal_co...","TableID":105} │ ├── MakePublicColumnNotNullValidated {"ColumnID":1,"TableID":105} @@ -133,6 +132,7 @@ Schema change plan for DROP TABLE ‹defaultdb›.‹public›.‹t›; │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":2,"TableID":105} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967295,"TableID":105} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":4294967294,"TableID":105} + │ ├── AssertColumnFamilyIsRemoved {"TableID":105} │ ├── MakeWriteOnlyColumnDeleteOnly {"ColumnID":1,"TableID":105} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967295,"TableID":105} │ ├── MakeDeleteOnlyColumnAbsent {"ColumnID":4294967294,"TableID":105} 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 cba348e7102d..39147d2f38cd 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 @@ -61,8 +61,20 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ ├── • ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 106, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -204,10 +216,6 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ ObjectID: 106 │ │ ParentSchemaID: 101 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 106 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 106 @@ -280,9 +288,12 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ DescriptorID: 106 │ │ User: admin │ │ -│ └── • RemoveUserPrivileges -│ DescriptorID: 106 -│ User: root +│ ├── • RemoveUserPrivileges +│ │ DescriptorID: 106 +│ │ User: root +│ │ +│ └── • AssertColumnFamilyIsRemoved +│ TableID: 106 │ ├── • PreCommitPhase │ │ @@ -417,8 +428,20 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ ├── • ColumnFamily:{DescID: 106, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED View:{DescID: 106} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED View:{DescID: 106} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 106, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 106, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -635,10 +658,6 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ ObjectID: 106 │ │ ParentSchemaID: 101 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 106 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 106 @@ -731,6 +750,9 @@ EXPLAIN (ddl, verbose) DROP INDEX idx CASCADE; │ │ ColumnID: 4294967294 │ │ TableID: 106 │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 106 +│ │ │ ├── • MakeWriteOnlyColumnDeleteOnly │ │ ColumnID: 2 │ │ TableID: 106 diff --git a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table index 041573ed0e5b..698f94693f64 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table @@ -59,8 +59,23 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ ├── • ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 107, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -227,10 +242,6 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ ├── • RemoveTableComment │ │ TableID: 107 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 107 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 107 @@ -308,9 +319,12 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ DescriptorID: 107 │ │ User: admin │ │ -│ └── • RemoveUserPrivileges -│ DescriptorID: 107 -│ User: root +│ ├── • RemoveUserPrivileges +│ │ DescriptorID: 107 +│ │ User: root +│ │ +│ └── • AssertColumnFamilyIsRemoved +│ TableID: 107 │ ├── • PreCommitPhase │ │ @@ -451,8 +465,23 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ ├── • ColumnFamily:{DescID: 107, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 107} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 107} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 3} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 107, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 107, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -718,10 +747,6 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ ├── • RemoveTableComment │ │ TableID: 107 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 107 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 107 @@ -823,6 +848,9 @@ EXPLAIN (ddl, verbose) DROP TABLE db.sc.t; │ │ ColumnID: 4294967294 │ │ TableID: 107 │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 107 +│ │ │ ├── • MakeWriteOnlyColumnDeleteOnly │ │ ColumnID: 3 │ │ TableID: 107 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 e6393e7d020a..6ceabc30efca 100644 --- a/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default +++ b/pkg/sql/schemachanger/testdata/explain_verbose/drop_table_udf_default @@ -50,8 +50,20 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ ├── • ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 105, ColumnID: 1} │ │ │ │ PUBLIC → WRITE_ONLY @@ -191,10 +203,6 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ ObjectID: 105 │ │ ParentSchemaID: 101 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 105 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 105 @@ -269,9 +277,12 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ DescriptorID: 105 │ │ User: admin │ │ -│ └── • RemoveUserPrivileges -│ DescriptorID: 105 -│ User: root +│ ├── • RemoveUserPrivileges +│ │ DescriptorID: 105 +│ │ User: root +│ │ +│ └── • AssertColumnFamilyIsRemoved +│ TableID: 105 │ ├── • PreCommitPhase │ │ @@ -394,8 +405,20 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ ├── • ColumnFamily:{DescID: 105, Name: primary, ColumnFamilyID: 0} │ │ │ │ PUBLIC → ABSENT │ │ │ │ -│ │ │ └── • Precedence dependency from DROPPED Table:{DescID: 105} -│ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ ├── • Precedence dependency from DROPPED Table:{DescID: 105} +│ │ │ │ rule: "descriptor dropped before dependent element removal" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 1} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 2} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ ├── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967295} +│ │ │ │ rule: "column type removed before column family" +│ │ │ │ +│ │ │ └── • Precedence dependency from ABSENT ColumnType:{DescID: 105, ColumnFamilyID: 0, ColumnID: 4294967294} +│ │ │ rule: "column type removed before column family" │ │ │ │ │ ├── • Column:{DescID: 105, ColumnID: 1} │ │ │ │ PUBLIC → ABSENT @@ -610,10 +633,6 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ ObjectID: 105 │ │ ParentSchemaID: 101 │ │ -│ ├── • NotImplementedForPublicObjects -│ │ DescID: 105 -│ │ ElementType: scpb.ColumnFamily -│ │ │ ├── • MakePublicColumnWriteOnly │ │ ColumnID: 1 │ │ TableID: 105 @@ -708,6 +727,9 @@ EXPLAIN (ddl, verbose) DROP TABLE t; │ │ ColumnID: 4294967294 │ │ TableID: 105 │ │ +│ ├── • AssertColumnFamilyIsRemoved +│ │ TableID: 105 +│ │ │ ├── • MakeWriteOnlyColumnDeleteOnly │ │ ColumnID: 1 │ │ TableID: 105