From 65de860ca1da9209b9be2ead66b6bb2780bf2faf Mon Sep 17 00:00:00 2001 From: Faizan Qazi Date: Tue, 28 Mar 2023 18:35:16 +0000 Subject: [PATCH] sql/schemachangr: dropping column families ran into errors Previously, dropping column families was not implemented, when we eliminated oprules, we replaced the ops with NotImplementedForDrop, which wasn't sufficient for dropped columns. The column families are cleaned up when the column type itself is dropped, so we don't really need to do much here. To address this, this patch will add code to only assert that either the table is being dropped or the column family has been removed earlier. Fixes: #99796 Release note: None --- .../drop_database_multiregion_primary_region | 4 +- .../testdata/explain/drop_table_multiregion | 6 +- .../drop_table_multiregion_primary_region | 6 +- .../drop_database_multiregion_primary_region | 40 ++++++++---- .../explain_verbose/drop_table_multiregion | 56 ++++++++++++----- .../drop_table_multiregion_primary_region | 46 +++++++++----- pkg/cli/testdata/declarative-rules/deprules | 13 ++++ .../scexec/scmutationexec/column.go | 16 +++++ .../scexec/scmutationexec/scmutationexec.go | 6 +- .../schemachanger/scop/immediate_mutation.go | 10 +++ .../internal/opgen/opgen_column_family.go | 19 +++++- .../internal/rules/current/dep_drop_column.go | 14 +++++ .../internal/rules/current/testdata/deprules | 26 ++++++++ .../internal/rules/current/testdata/oprules | 4 ++ .../scplan/internal/rules/helpers.go | 15 +++++ .../rules/release_22_2/testdata/deprules | 4 ++ .../rules/release_22_2/testdata/oprules | 4 ++ .../scplan/testdata/drop_database | 60 ++++++++++++++---- .../schemachanger/scplan/testdata/drop_index | 10 ++- .../scplan/testdata/drop_owned_by | 20 +++--- .../schemachanger/scplan/testdata/drop_schema | 30 +++++++-- .../schemachanger/scplan/testdata/drop_table | 63 ++++++++++++++++--- .../drop_index_with_materialized_view_dep | 6 +- .../schemachanger/testdata/explain/drop_table | 6 +- .../testdata/explain/drop_table_udf_default | 6 +- .../drop_index_with_materialized_view_dep | 52 ++++++++++----- .../testdata/explain_verbose/drop_table | 58 ++++++++++++----- .../explain_verbose/drop_table_udf_default | 52 ++++++++++----- 28 files changed, 496 insertions(+), 156 deletions(-) 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