Skip to content

Commit fac0930

Browse files
committed
catalog: Add method ConcurrentSchemaChangeJobIDs to Descriptor interface
This commits adds a method ConcurrentSchemaChangeJobIDs that retrieves all in-progress schema change job IDs on a particular descriptor, legacy or declarative. Release note: None
1 parent 8961a31 commit fac0930

File tree

8 files changed

+64
-0
lines changed

8 files changed

+64
-0
lines changed

pkg/sql/catalog/dbdesc/database_desc.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,15 @@ func (desc *immutable) HasConcurrentSchemaChanges() bool {
466466
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID
467467
}
468468

469+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
470+
func (desc *immutable) ConcurrentSchemaChangeJobIDs() (ret []catpb.JobID) {
471+
if desc.DeclarativeSchemaChangerState != nil &&
472+
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID {
473+
ret = append(ret, desc.DeclarativeSchemaChangerState.JobID)
474+
}
475+
return ret
476+
}
477+
469478
// GetDefaultPrivilegeDescriptor returns a DefaultPrivilegeDescriptor.
470479
func (desc *immutable) GetDefaultPrivilegeDescriptor() catalog.DefaultPrivilegeDescriptor {
471480
defaultPrivilegeDescriptor := desc.GetDefaultPrivileges()

pkg/sql/catalog/descriptor.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,10 @@ type Descriptor interface {
246246
// in progress, either legacy or declarative.
247247
HasConcurrentSchemaChanges() bool
248248

249+
// ConcurrentSchemaChangeJobIDs returns all in-progress schema change
250+
// jobs, either legacy or declarative.
251+
ConcurrentSchemaChangeJobIDs() []catpb.JobID
252+
249253
// SkipNamespace is true when a descriptor should not have a namespace record.
250254
SkipNamespace() bool
251255

pkg/sql/catalog/funcdesc/func_desc.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,15 @@ func (desc *immutable) HasConcurrentSchemaChanges() bool {
394394
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID
395395
}
396396

397+
// ConcurrentSchemaChangeJobIDs implements the catalog.Descriptor interface.
398+
func (desc *immutable) ConcurrentSchemaChangeJobIDs() (ret []catpb.JobID) {
399+
if desc.DeclarativeSchemaChangerState != nil &&
400+
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID {
401+
ret = append(ret, desc.DeclarativeSchemaChangerState.JobID)
402+
}
403+
return ret
404+
}
405+
397406
// SkipNamespace implements the catalog.Descriptor interface.
398407
func (desc *immutable) SkipNamespace() bool {
399408
return true

pkg/sql/catalog/schemadesc/schema_desc.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,15 @@ func (desc *immutable) HasConcurrentSchemaChanges() bool {
336336
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID
337337
}
338338

339+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
340+
func (desc *immutable) ConcurrentSchemaChangeJobIDs() (ret []catpb.JobID) {
341+
if desc.DeclarativeSchemaChangerState != nil &&
342+
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID {
343+
ret = append(ret, desc.DeclarativeSchemaChangerState.JobID)
344+
}
345+
return ret
346+
}
347+
339348
// MaybeIncrementVersion implements the MutableDescriptor interface.
340349
func (desc *Mutable) MaybeIncrementVersion() {
341350
// Already incremented, no-op.

pkg/sql/catalog/schemadesc/synthetic_schema_desc.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ func (p synthetic) HasConcurrentSchemaChanges() bool {
111111
return false
112112
}
113113

114+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
115+
func (p synthetic) ConcurrentSchemaChangeJobIDs() []catpb.JobID {
116+
return nil
117+
}
118+
114119
// SkipNamespace implements the descriptor interface.
115120
// We never store synthetic descriptors.
116121
func (p synthetic) SkipNamespace() bool {

pkg/sql/catalog/tabledesc/table_desc.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,20 @@ func (desc *wrapper) HasConcurrentSchemaChanges() bool {
7373
len(desc.MutationJobs) > 0
7474
}
7575

76+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
77+
func (desc *wrapper) ConcurrentSchemaChangeJobIDs() (ret []catpb.JobID) {
78+
if desc.DeclarativeSchemaChangerState != nil &&
79+
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID {
80+
ret = append(ret, desc.DeclarativeSchemaChangerState.JobID)
81+
}
82+
if len(desc.MutationJobs) > 0 {
83+
for _, mutationJob := range desc.MutationJobs {
84+
ret = append(ret, mutationJob.JobID)
85+
}
86+
}
87+
return ret
88+
}
89+
7690
// SkipNamespace implements the descriptor interface.
7791
func (desc *wrapper) SkipNamespace() bool {
7892
// Virtual tables are hard-coded and don't have entries in the

pkg/sql/catalog/typedesc/table_implicit_record_type.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ func (v *tableImplicitRecordType) HasConcurrentSchemaChanges() bool {
281281
return false
282282
}
283283

284+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
285+
func (v *tableImplicitRecordType) ConcurrentSchemaChangeJobIDs() []catpb.JobID {
286+
return nil
287+
}
288+
284289
// SkipNamespace implements catalog.Descriptor. We never store table implicit
285290
// record type which is always constructed in memory.
286291
func (v *tableImplicitRecordType) SkipNamespace() bool {

pkg/sql/catalog/typedesc/type_desc.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -872,6 +872,15 @@ func (desc *immutable) HasConcurrentSchemaChanges() bool {
872872
return false
873873
}
874874

875+
// ConcurrentSchemaChangeJobIDs implements catalog.Descriptor.
876+
func (desc *immutable) ConcurrentSchemaChangeJobIDs() (ret []catpb.JobID) {
877+
if desc.DeclarativeSchemaChangerState != nil &&
878+
desc.DeclarativeSchemaChangerState.JobID != catpb.InvalidJobID {
879+
ret = append(ret, desc.DeclarativeSchemaChangerState.JobID)
880+
}
881+
return ret
882+
}
883+
875884
// SkipNamespace implements the descriptor interface.
876885
func (desc *immutable) SkipNamespace() bool {
877886
return false

0 commit comments

Comments
 (0)