Skip to content

Commit 806f28b

Browse files
committed
opt: simplify ScalarBuilder.Build
Release note: None
1 parent cdf6d15 commit 806f28b

File tree

10 files changed

+25
-32
lines changed

10 files changed

+25
-32
lines changed

pkg/sql/opt/idxconstraint/index_constraints_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,10 @@ func TestIndexConstraints(t *testing.T) {
120120
computedCols = make(map[opt.ColumnID]opt.ScalarExpr)
121121
for col, expr := range sv.ComputedCols() {
122122
b := optbuilder.NewScalar(context.Background(), &semaCtx, &evalCtx, &f)
123-
if err := b.Build(expr); err != nil {
123+
computedColExpr, err := b.Build(expr)
124+
if err != nil {
124125
d.Fatalf(t, "error building computed column expression: %v", err)
125126
}
126-
computedColExpr := f.Memo().RootExpr().(opt.ScalarExpr)
127127
computedCols[col] = computedColExpr
128128
var sharedProps props.Shared
129129
memo.BuildSharedProps(computedColExpr, &sharedProps, &evalCtx)
@@ -314,10 +314,10 @@ func buildFilters(
314314
return memo.FiltersExpr{}, err
315315
}
316316
b := optbuilder.NewScalar(context.Background(), semaCtx, evalCtx, f)
317-
if err := b.Build(expr); err != nil {
317+
root, err := b.Build(expr)
318+
if err != nil {
318319
return memo.FiltersExpr{}, err
319320
}
320-
root := f.Memo().RootExpr().(opt.ScalarExpr)
321321
if _, ok := root.(*memo.TrueExpr); ok {
322322
return memo.TrueFilter, nil
323323
}

pkg/sql/opt/lookupjoin/constraint_builder_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ func TestLookupConstraints(t *testing.T) {
103103
return 0, opt.ColSet{}, err
104104
}
105105
b := optbuilder.NewScalar(context.Background(), &semaCtx, &evalCtx, &f)
106-
if err := b.Build(expr); err != nil {
106+
compExpr, err := b.Build(expr)
107+
if err != nil {
107108
return 0, opt.ColSet{}, err
108109
}
109-
compExpr := f.Memo().RootExpr().(opt.ScalarExpr)
110110
var sharedProps props.Shared
111111
memo.BuildSharedProps(compExpr, &sharedProps, &evalCtx)
112112
md.TableMeta(tableID).AddComputedCol(colID, compExpr, sharedProps.OuterCols)
@@ -312,12 +312,11 @@ func makeFiltersExpr(
312312
}
313313

314314
b := optbuilder.NewScalar(context.Background(), semaCtx, evalCtx, f)
315-
if err := b.Build(expr); err != nil {
315+
root, err := b.Build(expr)
316+
if err != nil {
316317
return nil, err
317318
}
318319

319-
root := f.Memo().RootExpr().(opt.ScalarExpr)
320-
321320
return memo.FiltersExpr{f.ConstructFiltersItem(root)}, nil
322321
}
323322

pkg/sql/opt/memo/expr_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"testing"
1818

1919
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
20-
"github.com/cockroachdb/cockroach/pkg/sql/opt"
2120
"github.com/cockroachdb/cockroach/pkg/sql/opt/memo"
2221
"github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder"
2322
"github.com/cockroachdb/cockroach/pkg/sql/opt/testutils"
@@ -93,11 +92,11 @@ func TestExprIsNeverNull(t *testing.T) {
9392
}
9493

9594
b := optbuilder.NewScalar(ctx, &semaCtx, &evalCtx, o.Factory())
96-
err = b.Build(expr)
95+
scalar, err := b.Build(expr)
9796
if err != nil {
9897
return fmt.Sprintf("error: %s\n", strings.TrimSpace(err.Error()))
9998
}
100-
result := memo.ExprIsNeverNull(o.Memo().RootExpr().(opt.ScalarExpr), sv.NotNullCols())
99+
result := memo.ExprIsNeverNull(scalar, sv.NotNullCols())
101100
return fmt.Sprintf("%t\n", result)
102101

103102
default:

pkg/sql/opt/memo/memo.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,6 @@ func (m *Memo) SetRoot(e RelExpr, phys *physical.Required) {
315315
}
316316
}
317317

318-
// SetScalarRoot stores the root memo expression when it is a scalar expression.
319-
// Used only for testing.
320-
func (m *Memo) SetScalarRoot(scalar opt.ScalarExpr) {
321-
m.rootExpr = scalar
322-
}
323-
324318
// HasPlaceholders returns true if the memo contains at least one placeholder
325319
// operator.
326320
func (m *Memo) HasPlaceholders() bool {

pkg/sql/opt/memo/memo_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ func TestCompositeSensitive(t *testing.T) {
9797
}
9898

9999
b := optbuilder.NewScalar(context.Background(), &semaCtx, &evalCtx, &f)
100-
if err := b.Build(expr); err != nil {
100+
scalar, err := b.Build(expr)
101+
if err != nil {
101102
d.Fatalf(t, "error building: %v", err)
102103
}
103-
return fmt.Sprintf("%v", memo.CanBeCompositeSensitive(md, f.Memo().RootExpr()))
104+
return fmt.Sprintf("%v", memo.CanBeCompositeSensitive(md, scalar))
104105
})
105106
}
106107

pkg/sql/opt/optbuilder/builder_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,14 @@ func TestBuilder(t *testing.T) {
112112
// of the build process.
113113
o.DisableOptimizations()
114114
b := optbuilder.NewScalar(ctx, &semaCtx, &evalCtx, o.Factory())
115-
err = b.Build(expr)
115+
scalar, err := b.Build(expr)
116116
if err != nil {
117117
return fmt.Sprintf("error: %s\n", strings.TrimSpace(err.Error()))
118118
}
119119
f := memo.MakeExprFmtCtx(
120120
ctx, tester.Flags.ExprFormat, false /* redactableValues */, o.Memo(), catalog,
121121
)
122-
f.FormatExpr(o.Memo().RootExpr())
122+
f.FormatExpr(scalar)
123123
return f.Buffer.String()
124124

125125
default:

pkg/sql/opt/optbuilder/scalar.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,7 @@ func NewScalar(
11771177

11781178
// Build a memo structure from a TypedExpr: the root group represents a scalar
11791179
// expression equivalent to expr.
1180-
func (sb *ScalarBuilder) Build(expr tree.Expr) (err error) {
1180+
func (sb *ScalarBuilder) Build(expr tree.Expr) (_ opt.ScalarExpr, err error) {
11811181
defer func() {
11821182
if r := recover(); r != nil {
11831183
// This code allows us to propagate errors without adding lots of checks
@@ -1194,8 +1194,7 @@ func (sb *ScalarBuilder) Build(expr tree.Expr) (err error) {
11941194

11951195
typedExpr := sb.scope.resolveType(expr, types.Any)
11961196
scalar := sb.buildScalar(typedExpr, &sb.scope, nil, nil, nil)
1197-
sb.factory.Memo().SetScalarRoot(scalar)
1198-
return nil
1197+
return scalar, nil
11991198
}
12001199

12011200
// reType is similar to tree.ReType, except that it panics with an internal

pkg/sql/opt/partialidx/implicator_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,11 +370,10 @@ func makeFiltersExpr(
370370
}
371371

372372
b := optbuilder.NewScalar(context.Background(), semaCtx, evalCtx, f)
373-
if err := b.Build(expr); err != nil {
373+
root, err := b.Build(expr)
374+
if err != nil {
374375
return nil, err
375376
}
376377

377-
root := f.Memo().RootExpr().(opt.ScalarExpr)
378-
379378
return memo.FiltersExpr{f.ConstructFiltersItem(root)}, nil
380379
}

pkg/sql/opt/testutils/build.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,12 @@ func BuildScalar(
5757
}
5858

5959
b := optbuilder.NewScalar(context.Background(), semaCtx, evalCtx, f)
60-
if err := b.Build(expr); err != nil {
60+
root, err := b.Build(expr)
61+
if err != nil {
6162
t.Fatal(err)
6263
}
6364

64-
return f.Memo().RootExpr().(opt.ScalarExpr)
65+
return root
6566
}
6667

6768
// BuildFilters builds the given input string as a FiltersExpr and returns it.

pkg/sql/sem/eval/eval_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,13 @@ func optBuildScalar(evalCtx *eval.Context, e tree.Expr) (tree.TypedExpr, error)
100100
o.Init(ctx, evalCtx, nil /* catalog */)
101101
semaCtx := tree.MakeSemaContext()
102102
b := optbuilder.NewScalar(ctx, &semaCtx, evalCtx, o.Factory())
103-
if err := b.Build(e); err != nil {
103+
scalar, err := b.Build(e)
104+
if err != nil {
104105
return nil, err
105106
}
106107

107108
bld := execbuilder.New(
108-
ctx, nil /* factory */, &o, o.Memo(), nil /* catalog */, o.Memo().RootExpr(),
109+
ctx, nil /* factory */, &o, o.Memo(), nil /* catalog */, scalar,
109110
evalCtx, false, /* allowAutoCommit */
110111
false, /* isANSIDML */
111112
)

0 commit comments

Comments
 (0)