diff --git a/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/BUILD.bazel b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/BUILD.bazel index 9633389a35de..ff88fff62dc4 100644 --- a/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/BUILD.bazel +++ b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/BUILD.bazel @@ -9,6 +9,7 @@ go_library( "alter_table_add_constraint.go", "alter_table_alter_column_drop_not_null.go", "alter_table_alter_column_drop_stored.go", + "alter_table_alter_column_identity.go", "alter_table_alter_column_set_default.go", "alter_table_alter_column_set_not_null.go", "alter_table_alter_column_set_on_update.go", diff --git a/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table.go b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table.go index f8261d22647a..8278a5fb9605 100644 --- a/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table.go +++ b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table.go @@ -45,6 +45,7 @@ var supportedAlterTableStatements = map[reflect.Type]supportedAlterTableCommand{ reflect.TypeOf((*tree.AlterTableRenameColumn)(nil)): {fn: alterTableRenameColumn, on: true, checks: isV254Active}, reflect.TypeOf((*tree.AlterTableDropStored)(nil)): {fn: alterTableDropStored, on: true, checks: isV261Active}, reflect.TypeOf((*tree.AlterTableRenameConstraint)(nil)): {fn: alterTableRenameConstraint, on: true, checks: isV261Active}, + reflect.TypeOf((*tree.AlterTableIdentity)(nil)): {fn: alterTableAlterColumnIdentity, on: true, checks: isV261Active}, } func init() { diff --git a/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_alter_column_identity.go b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_alter_column_identity.go new file mode 100644 index 000000000000..3940e4db054c --- /dev/null +++ b/pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_alter_column_identity.go @@ -0,0 +1,97 @@ +// Copyright 2025 The Cockroach Authors. +// +// Use of this software is governed by the CockroachDB Software License +// included in the /LICENSE file. + +package scbuildstmt + +import ( + "fmt" + "reflect" + + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr" + "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" + "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" + "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scpb" + "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" +) + +func alterTableAlterColumnIdentity( + b BuildCtx, tn *tree.TableName, tbl *scpb.Table, stmt tree.Statement, t *tree.AlterTableIdentity, +) { + alterColumnPreChecks(b, tn, tbl, t.Column) + + columnID := getColumnIDFromColumnName(b, tbl.TableID, t.Column, true /* required */) + // Block alters on system columns. + panicIfSystemColumn(mustRetrieveColumnElem(b, tbl.TableID, columnID), t.Column) + + sequenceOwner := b.QueryByID(tbl.TableID).FilterSequenceOwner().Filter(func(_ scpb.Status, _ scpb.TargetStatus, e *scpb.SequenceOwner) bool { + return e.TableID == tbl.TableID && e.ColumnID == columnID + }).MustGetZeroOrOneElement() + + if sequenceOwner == nil { + panic(pgerror.Newf( + pgcode.FeatureNotSupported, + "cannot alter identity of a non-sequence column %q", tree.ErrString(&t.Column))) + } + + newOpts := descpb.TableDescriptor_SequenceOpts{ + Increment: 1, + } + if err := schemaexpr.AssignSequenceOptions(&newOpts, + t.SeqOptions, + 64, + true, + nil, + ); err != nil { + panic(err) + } + + defaultOpts := descpb.TableDescriptor_SequenceOpts{ + Increment: 1, + } + if err := schemaexpr.AssignSequenceOptions(&defaultOpts, + nil, + 64, + true, + nil, + ); err != nil { + panic(err) + } + + updateSequenceOption := func(key string, defaultValue, value interface{}) { + newSeqOption := scpb.SequenceOption{ + SequenceID: sequenceOwner.SequenceID, + Key: key, + Value: fmt.Sprintf("%v", value), + } + + oldSeqOption := b.QueryByID(sequenceOwner.SequenceID).FilterSequenceOption().Filter(func(current scpb.Status, target scpb.TargetStatus, e *scpb.SequenceOption) bool { + return e.Key == key + }).MustGetZeroOrOneElement() + if oldSeqOption != nil { + // Skip a noop update. + if oldSeqOption.Value == newSeqOption.Value { + return + } + b.Drop(oldSeqOption) + } + + // Skip setting to default values. + if reflect.DeepEqual(defaultValue, value) { + return + } + + b.Add(&newSeqOption) + } + + updateSequenceOption(tree.SeqOptIncrement, defaultOpts.Increment, newOpts.Increment) + // updateSequenceOption(tree.SeqOptMinValue, defaultOpts.MinValue, newOpts.MinValue) + // updateSequenceOption(tree.SeqOptMaxValue, defaultOpts.MaxValue, newOpts.MaxValue) + // updateSequenceOption(tree.SeqOptStart, defaultOpts.Start, newOpts.Start) + // updateSequenceOption(tree.SeqOptVirtual, defaultOpts.Virtual, newOpts.Virtual) + // updateSequenceOption(tree.SeqOptCacheSession, defaultOpts.SessionCacheSize, newOpts.SessionCacheSize) + // updateSequenceOption(tree.SeqOptCacheNode, defaultOpts.NodeCacheSize, newOpts.NodeCacheSize) + // updateSequenceOption(tree.SeqOptAs, defaultOpts.AsIntegerType, newOpts.AsIntegerType) +} diff --git a/pkg/sql/schemachanger/scexec/scmutationexec/sequence.go b/pkg/sql/schemachanger/scexec/scmutationexec/sequence.go index 8141d5ee2a76..fa7a0566f8bb 100644 --- a/pkg/sql/schemachanger/scexec/scmutationexec/sequence.go +++ b/pkg/sql/schemachanger/scexec/scmutationexec/sequence.go @@ -48,9 +48,7 @@ func (i *immediateVisitor) CreateSequenceDescriptor( return nil } -func (i *immediateVisitor) SetSequenceOptions( - ctx context.Context, op scop.SetSequenceOptions, -) error { +func (i *immediateVisitor) SetSequenceOption(ctx context.Context, op scop.SetSequenceOption) error { sc, err := i.checkOutTable(ctx, op.SequenceID) if err != nil { return err @@ -88,6 +86,13 @@ func (i *immediateVisitor) SetSequenceOptions( return sequenceOptionMeta[op.Key].SetFunc(op.Value) } +// TODO: implement +func (i *immediateVisitor) UnsetSequenceOption( + ctx context.Context, op scop.UnsetSequenceOption, +) error { + panic("unimplemented") +} + func (i *immediateVisitor) InitSequence(ctx context.Context, op scop.InitSequence) error { sc, err := i.checkOutTable(ctx, op.SequenceID) if err != nil { diff --git a/pkg/sql/schemachanger/scop/immediate_mutation.go b/pkg/sql/schemachanger/scop/immediate_mutation.go index 8c352b48af2d..c47ab31baf53 100644 --- a/pkg/sql/schemachanger/scop/immediate_mutation.go +++ b/pkg/sql/schemachanger/scop/immediate_mutation.go @@ -1085,13 +1085,19 @@ type CreateSequenceDescriptor struct { Temporary bool } -type SetSequenceOptions struct { +type SetSequenceOption struct { immediateMutationOp SequenceID descpb.ID Key string Value string } +type UnsetSequenceOption struct { + immediateMutationOp + SequenceID descpb.ID + Key string +} + type InitSequence struct { immediateMutationOp SequenceID descpb.ID diff --git a/pkg/sql/schemachanger/scop/immediate_mutation_visitor_generated.go b/pkg/sql/schemachanger/scop/immediate_mutation_visitor_generated.go index dac80f51f5fd..b1a26d50dbd9 100644 --- a/pkg/sql/schemachanger/scop/immediate_mutation_visitor_generated.go +++ b/pkg/sql/schemachanger/scop/immediate_mutation_visitor_generated.go @@ -156,7 +156,8 @@ type ImmediateMutationVisitor interface { UpdateOwner(context.Context, UpdateOwner) error CreateSchemaDescriptor(context.Context, CreateSchemaDescriptor) error CreateSequenceDescriptor(context.Context, CreateSequenceDescriptor) error - SetSequenceOptions(context.Context, SetSequenceOptions) error + SetSequenceOption(context.Context, SetSequenceOption) error + UnsetSequenceOption(context.Context, UnsetSequenceOption) error InitSequence(context.Context, InitSequence) error CreateDatabaseDescriptor(context.Context, CreateDatabaseDescriptor) error AddNamedRangeZoneConfig(context.Context, AddNamedRangeZoneConfig) error @@ -182,17 +183,23 @@ func (op NotImplemented) Visit(ctx context.Context, v ImmediateMutationVisitor) } // Visit is part of the ImmediateMutationOp interface. -func (op NotImplementedForPublicObjects) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op NotImplementedForPublicObjects) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.NotImplementedForPublicObjects(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op UndoAllInTxnImmediateMutationOpSideEffects) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UndoAllInTxnImmediateMutationOpSideEffects) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UndoAllInTxnImmediateMutationOpSideEffects(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeAbsentTempIndexDeleteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeAbsentTempIndexDeleteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeAbsentTempIndexDeleteOnly(ctx, op) } @@ -202,12 +209,16 @@ func (op MakeAbsentIndexBackfilling) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op SetAddedIndexPartialPredicate) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op SetAddedIndexPartialPredicate) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.SetAddedIndexPartialPredicate(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeDeleteOnlyIndexWriteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeDeleteOnlyIndexWriteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeDeleteOnlyIndexWriteOnly(ctx, op) } @@ -222,22 +233,30 @@ func (op MakeMergedIndexWriteOnly) Visit(ctx context.Context, v ImmediateMutatio } // Visit is part of the ImmediateMutationOp interface. -func (op MakeBackfillingIndexDeleteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeBackfillingIndexDeleteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeBackfillingIndexDeleteOnly(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedSecondaryIndexPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedSecondaryIndexPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedSecondaryIndexPublic(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedPrimaryIndexPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedPrimaryIndexPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedPrimaryIndexPublic(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicPrimaryIndexWriteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicPrimaryIndexWriteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicPrimaryIndexWriteOnly(ctx, op) } @@ -277,22 +296,30 @@ func (op SetNameInDescriptor) Visit(ctx context.Context, v ImmediateMutationVisi } // Visit is part of the ImmediateMutationOp interface. -func (op MakeDeleteOnlyColumnWriteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeDeleteOnlyColumnWriteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeDeleteOnlyColumnWriteOnly(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicSecondaryIndexWriteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicSecondaryIndexWriteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicSecondaryIndexWriteOnly(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeWriteOnlyIndexDeleteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeWriteOnlyIndexDeleteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeWriteOnlyIndexDeleteOnly(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveDroppedIndexPartialPredicate) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveDroppedIndexPartialPredicate) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveDroppedIndexPartialPredicate(ctx, op) } @@ -317,17 +344,23 @@ func (op AddColumnComputeExpression) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveColumnComputeExpression) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveColumnComputeExpression) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveColumnComputeExpression(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddColumnGeneratedAsIdentity) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddColumnGeneratedAsIdentity) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddColumnGeneratedAsIdentity(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveColumnGeneratedAsIdentity) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveColumnGeneratedAsIdentity) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveColumnGeneratedAsIdentity(ctx, op) } @@ -342,7 +375,9 @@ func (op MakePublicColumnWriteOnly) Visit(ctx context.Context, v ImmediateMutati } // Visit is part of the ImmediateMutationOp interface. -func (op MakeWriteOnlyColumnDeleteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeWriteOnlyColumnDeleteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeWriteOnlyColumnDeleteOnly(ctx, op) } @@ -357,7 +392,9 @@ func (op MakeDeleteOnlyColumnAbsent) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op AddOwnerBackReferenceInSequence) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddOwnerBackReferenceInSequence) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddOwnerBackReferenceInSequence(ctx, op) } @@ -367,7 +404,9 @@ func (op AddSequenceOwner) Visit(ctx context.Context, v ImmediateMutationVisitor } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveOwnerBackReferenceInSequence) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveOwnerBackReferenceInSequence) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveOwnerBackReferenceInSequence(ctx, op) } @@ -392,27 +431,37 @@ func (op AddCheckConstraint) Visit(ctx context.Context, v ImmediateMutationVisit } // Visit is part of the ImmediateMutationOp interface. -func (op MakeAbsentColumnNotNullWriteOnly) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeAbsentColumnNotNullWriteOnly) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeAbsentColumnNotNullWriteOnly(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicCheckConstraintValidated) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicCheckConstraintValidated) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicCheckConstraintValidated(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicColumnNotNullValidated) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicColumnNotNullValidated) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicColumnNotNullValidated(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedCheckConstraintPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedCheckConstraintPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedCheckConstraintPublic(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedColumnNotNullPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedColumnNotNullPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedColumnNotNullPublic(ctx, op) } @@ -422,12 +471,16 @@ func (op AddForeignKeyConstraint) Visit(ctx context.Context, v ImmediateMutation } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedForeignKeyConstraintPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedForeignKeyConstraintPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedForeignKeyConstraintPublic(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicForeignKeyConstraintValidated) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicForeignKeyConstraintValidated) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicForeignKeyConstraintValidated(ctx, op) } @@ -437,27 +490,37 @@ func (op RemoveForeignKeyConstraint) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveForeignKeyBackReference) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveForeignKeyBackReference) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveForeignKeyBackReference(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddUniqueWithoutIndexConstraint) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddUniqueWithoutIndexConstraint) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddUniqueWithoutIndexConstraint(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakeValidatedUniqueWithoutIndexConstraintPublic) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakeValidatedUniqueWithoutIndexConstraintPublic) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakeValidatedUniqueWithoutIndexConstraintPublic(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MakePublicUniqueWithoutIndexConstraintValidated) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MakePublicUniqueWithoutIndexConstraintValidated) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MakePublicUniqueWithoutIndexConstraintValidated(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveUniqueWithoutIndexConstraint) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveUniqueWithoutIndexConstraint) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveUniqueWithoutIndexConstraint(ctx, op) } @@ -492,7 +555,9 @@ func (op AddColumnDefaultExpression) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveColumnDefaultExpression) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveColumnDefaultExpression) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveColumnDefaultExpression(ctx, op) } @@ -502,7 +567,9 @@ func (op AddColumnOnUpdateExpression) Visit(ctx context.Context, v ImmediateMuta } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveColumnOnUpdateExpression) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveColumnOnUpdateExpression) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveColumnOnUpdateExpression(ctx, op) } @@ -587,7 +654,9 @@ func (op SetPolicyUsingExpression) Visit(ctx context.Context, v ImmediateMutatio } // Visit is part of the ImmediateMutationOp interface. -func (op SetPolicyWithCheckExpression) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op SetPolicyWithCheckExpression) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.SetPolicyWithCheckExpression(ctx, op) } @@ -597,12 +666,16 @@ func (op SetPolicyForwardReferences) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateTableBackReferencesInTypes) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateTableBackReferencesInTypes) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateTableBackReferencesInTypes(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateTypeBackReferencesInTypes) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateTypeBackReferencesInTypes) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateTypeBackReferencesInTypes(ctx, op) } @@ -612,67 +685,93 @@ func (op RemoveBackReferenceInTypes) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveBackReferenceInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveBackReferenceInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveBackReferenceInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateTableBackReferencesInSequences) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateTableBackReferencesInSequences) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateTableBackReferencesInSequences(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveBackReferencesInRelations) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveBackReferencesInRelations) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveBackReferencesInRelations(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddTableConstraintBackReferencesInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddTableConstraintBackReferencesInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddTableConstraintBackReferencesInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveTableConstraintBackReferencesFromFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveTableConstraintBackReferencesFromFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveTableConstraintBackReferencesFromFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddTableColumnBackReferencesInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddTableColumnBackReferencesInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddTableColumnBackReferencesInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveTableColumnBackReferencesInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveTableColumnBackReferencesInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveTableColumnBackReferencesInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddTableIndexBackReferencesInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddTableIndexBackReferencesInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddTableIndexBackReferencesInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveTableIndexBackReferencesInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveTableIndexBackReferencesInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveTableIndexBackReferencesInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddTriggerBackReferencesInRoutines) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddTriggerBackReferencesInRoutines) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddTriggerBackReferencesInRoutines(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveTriggerBackReferencesInRoutines) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveTriggerBackReferencesInRoutines) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveTriggerBackReferencesInRoutines(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op AddPolicyBackReferenceInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op AddPolicyBackReferenceInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.AddPolicyBackReferenceInFunctions(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op RemovePolicyBackReferenceInFunctions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemovePolicyBackReferenceInFunctions) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemovePolicyBackReferenceInFunctions(ctx, op) } @@ -702,7 +801,9 @@ func (op RemoveUserPrivileges) Visit(ctx context.Context, v ImmediateMutationVis } // Visit is part of the ImmediateMutationOp interface. -func (op RemoveJobStateFromDescriptor) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op RemoveJobStateFromDescriptor) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.RemoveJobStateFromDescriptor(ctx, op) } @@ -817,7 +918,9 @@ func (op SetFunctionLeakProof) Visit(ctx context.Context, v ImmediateMutationVis } // Visit is part of the ImmediateMutationOp interface. -func (op SetFunctionNullInputBehavior) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op SetFunctionNullInputBehavior) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.SetFunctionNullInputBehavior(ctx, op) } @@ -832,17 +935,23 @@ func (op SetFunctionSecurity) Visit(ctx context.Context, v ImmediateMutationVisi } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateFunctionTypeReferences) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateFunctionTypeReferences) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateFunctionTypeReferences(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateFunctionRelationReferences) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateFunctionRelationReferences) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateFunctionRelationReferences(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op UpdateTableBackReferencesInRelations) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op UpdateTableBackReferencesInRelations) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.UpdateTableBackReferencesInRelations(ctx, op) } @@ -872,8 +981,13 @@ func (op CreateSequenceDescriptor) Visit(ctx context.Context, v ImmediateMutatio } // Visit is part of the ImmediateMutationOp interface. -func (op SetSequenceOptions) Visit(ctx context.Context, v ImmediateMutationVisitor) error { - return v.SetSequenceOptions(ctx, op) +func (op SetSequenceOption) Visit(ctx context.Context, v ImmediateMutationVisitor) error { + return v.SetSequenceOption(ctx, op) +} + +// Visit is part of the ImmediateMutationOp interface. +func (op UnsetSequenceOption) Visit(ctx context.Context, v ImmediateMutationVisitor) error { + return v.UnsetSequenceOption(ctx, op) } // Visit is part of the ImmediateMutationOp interface. @@ -942,12 +1056,16 @@ func (op ForcedRowLevelSecurityMode) Visit(ctx context.Context, v ImmediateMutat } // Visit is part of the ImmediateMutationOp interface. -func (op MarkRecreatedIndexAsInvisible) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MarkRecreatedIndexAsInvisible) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MarkRecreatedIndexAsInvisible(ctx, op) } // Visit is part of the ImmediateMutationOp interface. -func (op MarkRecreatedIndexesAsVisible) Visit(ctx context.Context, v ImmediateMutationVisitor) error { +func (op MarkRecreatedIndexesAsVisible) Visit( + ctx context.Context, v ImmediateMutationVisitor, +) error { return v.MarkRecreatedIndexesAsVisible(ctx, op) } diff --git a/pkg/sql/schemachanger/scpb/elements.proto b/pkg/sql/schemachanger/scpb/elements.proto index e38830ad10fd..91b030877904 100644 --- a/pkg/sql/schemachanger/scpb/elements.proto +++ b/pkg/sql/schemachanger/scpb/elements.proto @@ -458,7 +458,6 @@ message SequenceOption { string value = 3; } - message SequenceOwner { uint32 sequence_id = 1 [(gogoproto.customname) = "SequenceID", (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.DescID"]; uint32 table_id = 2 [(gogoproto.customname) = "TableID", (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.DescID"]; diff --git a/pkg/sql/schemachanger/scplan/internal/opgen/opgen_sequence_option.go b/pkg/sql/schemachanger/scplan/internal/opgen/opgen_sequence_option.go index 32b8c14a8e7c..c66498aad4b9 100644 --- a/pkg/sql/schemachanger/scplan/internal/opgen/opgen_sequence_option.go +++ b/pkg/sql/schemachanger/scplan/internal/opgen/opgen_sequence_option.go @@ -15,8 +15,8 @@ func init() { toPublic( scpb.Status_ABSENT, to(scpb.Status_PUBLIC, - emit(func(this *scpb.SequenceOption) *scop.SetSequenceOptions { - return &scop.SetSequenceOptions{ + emit(func(this *scpb.SequenceOption) *scop.SetSequenceOption { + return &scop.SetSequenceOption{ SequenceID: this.SequenceID, Key: this.Key, Value: this.Value, @@ -32,5 +32,16 @@ func init() { }), ), ), + // toAbsent( + // scpb.Status_PUBLIC, + // to(scpb.Status_ABSENT, + // emit(func(this *scpb.SequenceOption) *scop.UnsetSequenceOption { + // return &scop.UnsetSequenceOption{ + // SequenceID: this.SequenceID, + // Key: this.Key, + // } + // }), + // ), + // ), ) } diff --git a/pkg/sql/schemachanger/scplan/testdata/create_sequence b/pkg/sql/schemachanger/scplan/testdata/create_sequence index 4c846ace7fc7..4841b88f4f04 100644 --- a/pkg/sql/schemachanger/scplan/testdata/create_sequence +++ b/pkg/sql/schemachanger/scplan/testdata/create_sequence @@ -34,7 +34,7 @@ StatementPhase stage 1 of 1 with 24 MutationType ops ObjParent: ChildObjectID: 104 SchemaID: 101 - *scop.SetSequenceOptions + *scop.SetSequenceOption Key: START SequenceID: 104 Value: "32" @@ -172,7 +172,7 @@ PreCommitPhase stage 2 of 2 with 25 MutationType ops ObjParent: ChildObjectID: 104 SchemaID: 101 - *scop.SetSequenceOptions + *scop.SetSequenceOption Key: START SequenceID: 104 Value: "32" diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_generated/add_column_generated.explain b/pkg/sql/schemachanger/testdata/end_to_end/add_column_generated/add_column_generated.explain index dbadf6d57b6f..1a2593712d4c 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_generated/add_column_generated.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_generated/add_column_generated.explain @@ -48,9 +48,9 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── SetNameInDescriptor {"DescriptorID":107,"Name":"tbl_serial_id_se..."} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"INCREMENT","SequenceID":107,"Value":"32"} - │ ├── SetSequenceOptions {"Key":"MINVALUE","SequenceID":107,"Value":"0"} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":107,"Value":"0"} + │ ├── SetSequenceOption {"Key":"INCREMENT","SequenceID":107,"Value":"32"} + │ ├── SetSequenceOption {"Key":"MINVALUE","SequenceID":107,"Value":"0"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":107,"Value":"0"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} @@ -164,9 +164,9 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── UpdateTTLScheduleMetadata {"NewName":"tbl_serial_id_se...","TableID":107} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"INCREMENT","SequenceID":107,"Value":"32"} - │ ├── SetSequenceOptions {"Key":"MINVALUE","SequenceID":107,"Value":"0"} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":107,"Value":"0"} + │ ├── SetSequenceOption {"Key":"INCREMENT","SequenceID":107,"Value":"32"} + │ ├── SetSequenceOption {"Key":"MINVALUE","SequenceID":107,"Value":"0"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":107,"Value":"0"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached/add_column_serial_simple_sequence_cached.explain b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached/add_column_serial_simple_sequence_cached.explain index bb57c98b9d9a..52c55f18bd4d 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached/add_column_serial_simple_sequence_cached.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached/add_column_serial_simple_sequence_cached.explain @@ -46,7 +46,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── SetNameInDescriptor {"DescriptorID":107,"Name":"tbl_serial_id_se..."} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"PER SESSION CACH...","SequenceID":107,"Value":"256"} + │ ├── SetSequenceOption {"Key":"PER SESSION CACH...","SequenceID":107,"Value":"256"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} @@ -153,7 +153,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── UpdateTTLScheduleMetadata {"NewName":"tbl_serial_id_se...","TableID":107} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"PER SESSION CACH...","SequenceID":107,"Value":"256"} + │ ├── SetSequenceOption {"Key":"PER SESSION CACH...","SequenceID":107,"Value":"256"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached_node/add_column_serial_simple_sequence_cached_node.explain b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached_node/add_column_serial_simple_sequence_cached_node.explain index e711a6575338..3a66e85c5463 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached_node/add_column_serial_simple_sequence_cached_node.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_cached_node/add_column_serial_simple_sequence_cached_node.explain @@ -46,7 +46,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── SetNameInDescriptor {"DescriptorID":107,"Name":"tbl_serial_id_se..."} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"PER NODE CACHE","SequenceID":107,"Value":"256"} + │ ├── SetSequenceOption {"Key":"PER NODE CACHE","SequenceID":107,"Value":"256"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} @@ -153,7 +153,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── UpdateTTLScheduleMetadata {"NewName":"tbl_serial_id_se...","TableID":107} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"PER NODE CACHE","SequenceID":107,"Value":"256"} + │ ├── SetSequenceOption {"Key":"PER NODE CACHE","SequenceID":107,"Value":"256"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_virtual/add_column_serial_simple_sequence_virtual.explain b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_virtual/add_column_serial_simple_sequence_virtual.explain index 43128f6ccae8..8235de607c16 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_virtual/add_column_serial_simple_sequence_virtual.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/add_column_serial_simple_sequence_virtual/add_column_serial_simple_sequence_virtual.explain @@ -46,7 +46,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── SetNameInDescriptor {"DescriptorID":107,"Name":"tbl_serial_id_se..."} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"VIRTUAL","SequenceID":107,"Value":"true"} + │ ├── SetSequenceOption {"Key":"VIRTUAL","SequenceID":107,"Value":"true"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} @@ -153,7 +153,7 @@ Schema change plan for ALTER TABLE ‹db›.‹public›.‹tbl› ADD COLUMN │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":107,"Name":"tbl_serial_id_se...","SchemaID":105}} │ ├── UpdateTTLScheduleMetadata {"NewName":"tbl_serial_id_se...","TableID":107} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":107,"SchemaID":105}} - │ ├── SetSequenceOptions {"Key":"VIRTUAL","SequenceID":107,"Value":"true"} + │ ├── SetSequenceOption {"Key":"VIRTUAL","SequenceID":107,"Value":"true"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":107}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":107}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":107} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_complex/create_complex__statement_4_of_4.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_complex/create_complex__statement_4_of_4.explain index fbd4e8231123..678b40d9af49 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_complex/create_complex__statement_4_of_4.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_complex/create_complex__statement_4_of_4.explain @@ -34,7 +34,7 @@ Schema change plan for CREATE SEQUENCE ‹db›.‹sc›.‹sq1› MINVALUE 1 MA │ ├── SetNameInDescriptor {"DescriptorID":108,"Name":"sq1"} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":108,"Name":"sq1","SchemaID":106}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":108,"SchemaID":106}} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":108,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":108,"Value":"32"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":108}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":108}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":108} @@ -161,7 +161,7 @@ Schema change plan for CREATE SEQUENCE ‹db›.‹sc›.‹sq1› MINVALUE 1 MA ├── AddDescriptorName {"Namespace":{"DatabaseID":104,"DescriptorID":108,"Name":"sq1","SchemaID":106}} ├── UpdateTTLScheduleMetadata {"NewName":"sq1","TableID":108} ├── SetObjectParentID {"ObjParent":{"ChildObjectID":108,"SchemaID":106}} - ├── SetSequenceOptions {"Key":"START","SequenceID":108,"Value":"32"} + ├── SetSequenceOption {"Key":"START","SequenceID":108,"Value":"32"} ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":108}} ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":108}} ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":108} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence/create_sequence.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence/create_sequence.explain index f7c52ae86967..546f3b23307d 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence/create_sequence.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence/create_sequence.explain @@ -27,7 +27,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI │ ├── SetNameInDescriptor {"DescriptorID":104,"Name":"sq1"} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":104,"Name":"sq1","SchemaID":101}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":104,"SchemaID":101}} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":104,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":104,"Value":"32"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":104}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":104}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":104} @@ -90,7 +90,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":104,"Name":"sq1","SchemaID":101}} ├── UpdateTTLScheduleMetadata {"NewName":"sq1","TableID":104} ├── SetObjectParentID {"ObjParent":{"ChildObjectID":104,"SchemaID":101}} - ├── SetSequenceOptions {"Key":"START","SequenceID":104,"Value":"32"} + ├── SetSequenceOption {"Key":"START","SequenceID":104,"Value":"32"} ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":104}} ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":104}} ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_1_of_2.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_1_of_2.explain index d0ceb2c00e01..847d140df01d 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_1_of_2.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_1_of_2.explain @@ -28,7 +28,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI │ ├── SetNameInDescriptor {"DescriptorID":105,"Name":"sq1"} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":105,"Name":"sq1","SchemaID":101}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":105,"SchemaID":101}} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":105,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":105,"Value":"32"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":105}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":105}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":105} @@ -91,7 +91,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":105,"Name":"sq1","SchemaID":101}} ├── UpdateTTLScheduleMetadata {"NewName":"sq1","TableID":105} ├── SetObjectParentID {"ObjParent":{"ChildObjectID":105,"SchemaID":101}} - ├── SetSequenceOptions {"Key":"START","SequenceID":105,"Value":"32"} + ├── SetSequenceOption {"Key":"START","SequenceID":105,"Value":"32"} ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":105}} ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":105}} ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":105} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_2_of_2.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_2_of_2.explain index c772e2492d0a..6b06e0086549 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_2_of_2.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_add_column/create_sequence_add_column__statement_2_of_2.explain @@ -103,7 +103,7 @@ Schema change plan for ALTER TABLE ‹defaultdb›.‹public›.‹t› ADD COLU │ │ └── PUBLIC → ABSENT TableSchemaLocked:{DescID: 104 (t)} │ └── 42 Mutation operations │ ├── CreateSequenceDescriptor {"SequenceID":105} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":105,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":105,"Value":"32"} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":105,"SchemaID":101}} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":105}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":105}} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_drop_sequence/create_sequence_drop_sequence__statement_1_of_2.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_drop_sequence/create_sequence_drop_sequence__statement_1_of_2.explain index f7c52ae86967..546f3b23307d 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_drop_sequence/create_sequence_drop_sequence__statement_1_of_2.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_sequence_drop_sequence/create_sequence_drop_sequence__statement_1_of_2.explain @@ -27,7 +27,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI │ ├── SetNameInDescriptor {"DescriptorID":104,"Name":"sq1"} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":104,"Name":"sq1","SchemaID":101}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":104,"SchemaID":101}} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":104,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":104,"Value":"32"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":104}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":104}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":104} @@ -90,7 +90,7 @@ Schema change plan for CREATE SEQUENCE ‹defaultdb›.‹public›.‹sq1› MI ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":104,"Name":"sq1","SchemaID":101}} ├── UpdateTTLScheduleMetadata {"NewName":"sq1","TableID":104} ├── SetObjectParentID {"ObjParent":{"ChildObjectID":104,"SchemaID":101}} - ├── SetSequenceOptions {"Key":"START","SequenceID":104,"Value":"32"} + ├── SetSequenceOption {"Key":"START","SequenceID":104,"Value":"32"} ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":104}} ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":104}} ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":104} diff --git a/pkg/sql/schemachanger/testdata/end_to_end/create_temp_sequence/create_temp_sequence.explain b/pkg/sql/schemachanger/testdata/end_to_end/create_temp_sequence/create_temp_sequence.explain index 3b290b98f692..09b5eb5a1d01 100644 --- a/pkg/sql/schemachanger/testdata/end_to_end/create_temp_sequence/create_temp_sequence.explain +++ b/pkg/sql/schemachanger/testdata/end_to_end/create_temp_sequence/create_temp_sequence.explain @@ -33,7 +33,7 @@ Schema change plan for CREATE TEMPORARY SEQUENCE ‹defaultdb›.‹pg_temp_123_ │ ├── SetNameInDescriptor {"DescriptorID":105,"Name":"sq1"} │ ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":105,"Name":"sq1","SchemaID":104}} │ ├── SetObjectParentID {"ObjParent":{"ChildObjectID":105,"SchemaID":104}} - │ ├── SetSequenceOptions {"Key":"START","SequenceID":105,"Value":"32"} + │ ├── SetSequenceOption {"Key":"START","SequenceID":105,"Value":"32"} │ ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":105}} │ ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":105}} │ ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":105} @@ -105,7 +105,7 @@ Schema change plan for CREATE TEMPORARY SEQUENCE ‹defaultdb›.‹pg_temp_123_ ├── AddDescriptorName {"Namespace":{"DatabaseID":100,"DescriptorID":105,"Name":"sq1","SchemaID":104}} ├── UpdateTTLScheduleMetadata {"NewName":"sq1","TableID":105} ├── SetObjectParentID {"ObjParent":{"ChildObjectID":105,"SchemaID":104}} - ├── SetSequenceOptions {"Key":"START","SequenceID":105,"Value":"32"} + ├── SetSequenceOption {"Key":"START","SequenceID":105,"Value":"32"} ├── MakeAbsentColumnDeleteOnly {"Column":{"ColumnID":1,"TableID":105}} ├── UpsertColumnType {"ColumnType":{"ColumnID":1,"TableID":105}} ├── SetColumnName {"ColumnID":1,"Name":"value","TableID":105} diff --git a/pkg/sql/sem/tree/alter_table.go b/pkg/sql/sem/tree/alter_table.go index 36294b09e81d..f84900fe231d 100644 --- a/pkg/sql/sem/tree/alter_table.go +++ b/pkg/sql/sem/tree/alter_table.go @@ -527,7 +527,7 @@ type AlterTableDropStored struct { Column Name } -// GetColumn implemnets the ColumnMutationCmd interface. +// GetColumn implements the ColumnMutationCmd interface. func (node *AlterTableDropStored) GetColumn() Name { return node.Column } @@ -778,7 +778,7 @@ type AlterTableAddIdentity struct { Qualification ColumnQualification } -// GetColumn implemnets the ColumnMutationCmd interface. +// GetColumn implements the ColumnMutationCmd interface. func (node *AlterTableAddIdentity) GetColumn() Name { return node.Column } @@ -814,7 +814,7 @@ type AlterTableSetIdentity struct { GeneratedAsIdentityType GeneratedIdentityType } -// GetColumn implemnets the ColumnMutationCmd interface. +// GetColumn implements the ColumnMutationCmd interface. func (node *AlterTableSetIdentity) GetColumn() Name { return node.Column } @@ -843,7 +843,7 @@ type AlterTableIdentity struct { SeqOptions SequenceOptions } -// GetColumn implemnets the ColumnMutationCmd interface. +// GetColumn implements the ColumnMutationCmd interface. func (node *AlterTableIdentity) GetColumn() Name { return node.Column } @@ -873,7 +873,7 @@ type AlterTableDropIdentity struct { IfExists bool } -// GetColumn implemnets the ColumnMutationCmd interface. +// GetColumn implements the ColumnMutationCmd interface. func (node *AlterTableDropIdentity) GetColumn() Name { return node.Column }