diff --git a/pkg/sql/catalog/descs/collection.go b/pkg/sql/catalog/descs/collection.go index c3bd52a4eead..d7c4c7a4dcff 100644 --- a/pkg/sql/catalog/descs/collection.go +++ b/pkg/sql/catalog/descs/collection.go @@ -1110,13 +1110,12 @@ func (tc *Collection) hydrateTypesInTableDesc( // Proceed to hydrating a fresh copy. } - // TODO(ajwerner): Propagate the IsModified status here. // Make a copy of the underlying descriptor before hydration. descBase := protoutil.Clone(t.TableDesc()).(*descpb.TableDescriptor) if err := typedesc.HydrateTypesInTableDescriptor(ctx, descBase, getType); err != nil { return nil, err } - return tabledesc.NewImmutable(*descBase), nil + return tabledesc.NewImmutableWithIsUncommittedVersion(*descBase, t.IsUncommittedVersion()), nil default: return desc, nil } diff --git a/pkg/sql/catalog/tabledesc/structured.go b/pkg/sql/catalog/tabledesc/structured.go index 471b9e0e0f44..50219eb4321a 100644 --- a/pkg/sql/catalog/tabledesc/structured.go +++ b/pkg/sql/catalog/tabledesc/structured.go @@ -187,8 +187,21 @@ func MakeImmutable(tbl descpb.TableDescriptor) Immutable { } // NewImmutable returns a Immutable from the given TableDescriptor. +// This function assumes that this descriptor has not been modified from the +// version stored in the key-value store. func NewImmutable(tbl descpb.TableDescriptor) *Immutable { + return NewImmutableWithIsUncommittedVersion(tbl, false /* isUncommittedVersion */) +} + +// NewImmutableWithIsUncommittedVersion returns a Immutable from the given +// TableDescriptor and allows the caller to mark the table as corresponding to +// an uncommitted version. This should be used when constructing a new copy of +// an Immutable from an existing descriptor which may have a new version. +func NewImmutableWithIsUncommittedVersion( + tbl descpb.TableDescriptor, isUncommittedVersion bool, +) *Immutable { desc := MakeImmutable(tbl) + desc.isUncommittedVersion = isUncommittedVersion return &desc }