Skip to content

Commit

Permalink
Merge #24779
Browse files Browse the repository at this point in the history
24779: cherrypick-1.1: sql: fix ALTER INDEX RENAME on primary index r=knz a=knz

Picks  #24776.

cc @cockroachdb/release 

Co-authored-by: Raphael 'kena' Poss <[email protected]>
  • Loading branch information
craig[bot] and knz committed Apr 18, 2018
2 parents 0a4bb3f + 49b2637 commit 1f56097
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
11 changes: 11 additions & 0 deletions pkg/sql/logictest/testdata/logic_test/rename_index
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,14 @@ ALTER INDEX users@ufo RENAME TO foo

statement ok
ALTER INDEX users@rar RENAME TO bar

# Regression test for #24774
statement ok
ALTER INDEX users@"primary" RENAME TO pk

query ITTT
EXPLAIN SELECT * FROM users@pk
----
0 scan · ·
0 · table users@pk
0 · spans ALL
4 changes: 3 additions & 1 deletion pkg/sql/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,9 @@ func (p *planner) RenameIndex(ctx context.Context, n *parser.RenameIndex) (planN
return nil, fmt.Errorf("index name %q already exists", string(n.NewName))
}

tableDesc.RenameIndexDescriptor(idx, string(n.NewName))
if err := tableDesc.RenameIndexDescriptor(idx, string(n.NewName)); err != nil {
return nil, err
}

if err := tableDesc.SetUpVersion(); err != nil {
return nil, err
Expand Down
15 changes: 11 additions & 4 deletions pkg/sql/sqlbase/structured.go
Original file line number Diff line number Diff line change
Expand Up @@ -1552,6 +1552,9 @@ func (desc *TableDescriptor) FindFamilyByID(id FamilyID) (*ColumnFamilyDescripto
// FindIndexByName finds the index with the specified name in the active
// list or the mutations list. It returns true if the index is being dropped.
func (desc *TableDescriptor) FindIndexByName(name string) (IndexDescriptor, bool, error) {
if desc.PrimaryIndex.Name == name {
return desc.PrimaryIndex, false, nil
}
for i, idx := range desc.Indexes {
if idx.Name == name {
return desc.Indexes[i], false, nil
Expand All @@ -1568,21 +1571,25 @@ func (desc *TableDescriptor) FindIndexByName(name string) (IndexDescriptor, bool
}

// RenameIndexDescriptor renames an index descriptor.
func (desc *TableDescriptor) RenameIndexDescriptor(index IndexDescriptor, name string) {
func (desc *TableDescriptor) RenameIndexDescriptor(index IndexDescriptor, name string) error {
id := index.ID
if id == desc.PrimaryIndex.ID {
desc.PrimaryIndex.Name = name
return nil
}
for i := range desc.Indexes {
if desc.Indexes[i].ID == id {
desc.Indexes[i].Name = name
return
return nil
}
}
for _, m := range desc.Mutations {
if idx := m.GetIndex(); idx != nil && idx.ID == id {
idx.Name = name
return
return nil
}
}
panic(fmt.Sprintf("index with id = %d does not exist", id))
return fmt.Errorf("index with id = %d does not exist", id)
}

// FindIndexByID finds an index (active or inactive) with the specified ID.
Expand Down

0 comments on commit 1f56097

Please sign in to comment.