Skip to content

Commit

Permalink
Merge pull request #66833 from rytaft/backport21.1-66792
Browse files Browse the repository at this point in the history
release-21.1: opt: fix panic due to concurrent map writes when copying metadata
  • Loading branch information
rytaft committed Jun 24, 2021
2 parents 7f57376 + 2efbb42 commit 880a334
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions pkg/sql/opt/table_meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,11 +186,21 @@ func (tm *TableMeta) copyScalars(copyScalar func(Expr) Expr) {
if tm.Constraints != nil {
tm.Constraints = copyScalar(tm.Constraints).(ScalarExpr)
}
for col, e := range tm.ComputedCols {
tm.ComputedCols[col] = copyScalar(e).(ScalarExpr)

if tm.ComputedCols != nil {
computedCols := make(map[ColumnID]ScalarExpr, len(tm.ComputedCols))
for col, e := range tm.ComputedCols {
computedCols[col] = copyScalar(e).(ScalarExpr)
}
tm.ComputedCols = computedCols
}
for idx, e := range tm.partialIndexPredicates {
tm.partialIndexPredicates[idx] = copyScalar(e).(ScalarExpr)

if tm.partialIndexPredicates != nil {
partialIndexPredicates := make(map[cat.IndexOrdinal]ScalarExpr, len(tm.partialIndexPredicates))
for idx, e := range tm.partialIndexPredicates {
partialIndexPredicates[idx] = copyScalar(e).(ScalarExpr)
}
tm.partialIndexPredicates = partialIndexPredicates
}
}

Expand Down

0 comments on commit 880a334

Please sign in to comment.