Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: cleaner cloning API #16079

Merged
merged 3 commits into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go/test/endtoend/vtgate/queries/random/query_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func (t *tableT) addColumns(col ...column) {

func (t *tableT) clone() *tableT {
return &tableT{
tableExpr: sqlparser.CloneSimpleTableExpr(t.tableExpr),
tableExpr: sqlparser.Clone(t.tableExpr),
alias: t.alias,
cols: slices.Clone(t.cols),
}
Expand Down
2 changes: 1 addition & 1 deletion go/test/fuzzing/ast_fuzzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func FuzzEqualsSQLNode(data []byte) int {
}

// Target 2:
newSQLNode := sqlparser.CloneSQLNode(inA)
newSQLNode := sqlparser.Clone(inA)
if !sqlparser.EqualsSQLNode(inA, newSQLNode) {
panic("These two nodes should be identical")
}
Expand Down
2 changes: 1 addition & 1 deletion go/vt/schema/online_ddl.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ func OnlineDDLFromCommentedStatement(stmt sqlparser.Statement) (onlineDDL *Onlin
// We clone the comments because they will end up being cached by the query planner. Then, the Directive() function actually modifies the comments.
// If comments are shared in cache, and Directive() modifies it, then we have a concurrency issue when someone else wants to read the comments.
// By cloning the comments we remove the concurrency problem.
comments = sqlparser.CloneRefOfParsedComments(comments)
comments = sqlparser.Clone(comments)
comments.ResetDirectives()

if comments.Length() == 0 {
Expand Down
2 changes: 1 addition & 1 deletion go/vt/schemadiff/capability.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func alterOptionCapableOfInstantDDL(alterOption sqlparser.AlterOption, createTab
return true, col.Type.Options.Storage
}
colStringStrippedDown := func(col *sqlparser.ColumnDefinition, stripDefault bool, stripEnum bool) string {
strippedCol := sqlparser.CloneRefOfColumnDefinition(col)
strippedCol := sqlparser.Clone(col)
if stripDefault {
strippedCol.Type.Options.Default = nil
strippedCol.Type.Options.DefaultLiteral = false
Expand Down
6 changes: 3 additions & 3 deletions go/vt/schemadiff/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,7 @@ func (s *Schema) ValidateViewReferences() error {
schemaInformation.addTable("dual")

for _, view := range s.Views() {
sel := sqlparser.CloneSelectStatement(view.CreateView.Select) // Analyze(), below, rewrites the select; we don't want to actually modify the schema
sel := sqlparser.Clone(view.CreateView.Select) // Analyze(), below, rewrites the select; we don't want to actually modify the schema
_, err := semantics.AnalyzeStrict(sel, semanticKS.Name, schemaInformation)
formalizeErr := func(err error) error {
if err == nil {
Expand Down Expand Up @@ -1079,7 +1079,7 @@ func (s *Schema) getViewColumnNames(v *CreateViewEntity, schemaInformation *decl
case *sqlparser.StarExpr:
if tableName := node.TableName.Name.String(); tableName != "" {
for _, col := range schemaInformation.Tables[tableName].Columns {
name := sqlparser.CloneRefOfIdentifierCI(&col.Name)
name := sqlparser.Clone(&col.Name)
columnNames = append(columnNames, name)
}
} else {
Expand All @@ -1088,7 +1088,7 @@ func (s *Schema) getViewColumnNames(v *CreateViewEntity, schemaInformation *decl
for _, entityName := range dependentNames {
if schemaInformation.Tables[entityName] != nil { // is nil for dual/DUAL
for _, col := range schemaInformation.Tables[entityName].Columns {
name := sqlparser.CloneRefOfIdentifierCI(&col.Name)
name := sqlparser.Clone(&col.Name)
columnNames = append(columnNames, name)
}
}
Expand Down
14 changes: 7 additions & 7 deletions go/vt/schemadiff/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func (d *AlterTableEntityDiff) Clone() EntityDiff {
}
ann := *d.annotations
clone := &AlterTableEntityDiff{
alterTable: sqlparser.CloneRefOfAlterTable(d.alterTable),
alterTable: sqlparser.Clone(d.alterTable),
instantDDLCapability: d.instantDDLCapability,
annotations: &ann,
}
Expand Down Expand Up @@ -245,7 +245,7 @@ func (d *CreateTableEntityDiff) Clone() EntityDiff {
return nil
}
clone := &CreateTableEntityDiff{
createTable: sqlparser.CloneRefOfCreateTable(d.createTable),
createTable: sqlparser.Clone(d.createTable),
}
if d.to != nil {
clone.to = d.to.Clone().(*CreateTableEntity)
Expand Down Expand Up @@ -336,7 +336,7 @@ func (d *DropTableEntityDiff) Clone() EntityDiff {
return nil
}
clone := &DropTableEntityDiff{
dropTable: sqlparser.CloneRefOfDropTable(d.dropTable),
dropTable: sqlparser.Clone(d.dropTable),
}
if d.from != nil {
clone.from = d.from.Clone().(*CreateTableEntity)
Expand Down Expand Up @@ -428,7 +428,7 @@ func (d *RenameTableEntityDiff) Clone() EntityDiff {
return nil
}
clone := &RenameTableEntityDiff{
renameTable: sqlparser.CloneRefOfRenameTable(d.renameTable),
renameTable: sqlparser.Clone(d.renameTable),
}
if d.from != nil {
clone.from = d.from.Clone().(*CreateTableEntity)
Expand Down Expand Up @@ -526,7 +526,7 @@ func (c *CreateTableEntity) GetCollation() string {
}

func (c *CreateTableEntity) Clone() Entity {
return &CreateTableEntity{CreateTable: sqlparser.CloneRefOfCreateTable(c.CreateTable), Env: c.Env}
return &CreateTableEntity{CreateTable: sqlparser.Clone(c.CreateTable), Env: c.Env}
}

func getTableCharsetCollate(env *Environment, tableOptions *sqlparser.TableOptions) *charsetCollate {
Expand Down Expand Up @@ -1601,8 +1601,8 @@ func (c *CreateTableEntity) diffKeys(alterTable *sqlparser.AlterTable,
// Returns if this is a visibility only change and if true, whether
// the new visibility is invisible or not.
func indexOnlyVisibilityChange(t1Key, t2Key *sqlparser.IndexDefinition) (bool, bool) {
t1KeyCopy := sqlparser.CloneRefOfIndexDefinition(t1Key)
t2KeyCopy := sqlparser.CloneRefOfIndexDefinition(t2Key)
t1KeyCopy := sqlparser.Clone(t1Key)
t2KeyCopy := sqlparser.Clone(t2Key)
t1KeyKeptOptions := make([]*sqlparser.IndexOption, 0, len(t1KeyCopy.Options))
t2KeyInvisible := false
for _, opt := range t1KeyCopy.Options {
Expand Down
8 changes: 4 additions & 4 deletions go/vt/schemadiff/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func (d *AlterViewEntityDiff) Clone() EntityDiff {
return nil
}
clone := &AlterViewEntityDiff{
alterView: sqlparser.CloneRefOfAlterView(d.alterView),
alterView: sqlparser.Clone(d.alterView),
}
if d.from != nil {
clone.from = d.from.Clone().(*CreateViewEntity)
Expand Down Expand Up @@ -200,7 +200,7 @@ func (d *CreateViewEntityDiff) Clone() EntityDiff {
return nil
}
return &CreateViewEntityDiff{
createView: sqlparser.CloneRefOfCreateView(d.createView),
createView: sqlparser.Clone(d.createView),
}
}

Expand Down Expand Up @@ -287,7 +287,7 @@ func (d *DropViewEntityDiff) Clone() EntityDiff {
return nil
}
clone := &DropViewEntityDiff{
dropView: sqlparser.CloneRefOfDropView(d.dropView),
dropView: sqlparser.Clone(d.dropView),
}
if d.from != nil {
clone.from = d.from.Clone().(*CreateViewEntity)
Expand Down Expand Up @@ -402,7 +402,7 @@ func (c *CreateViewEntity) Apply(diff EntityDiff) (Entity, error) {
}

func (c *CreateViewEntity) Clone() Entity {
return &CreateViewEntity{CreateView: sqlparser.CloneRefOfCreateView(c.CreateView)}
return &CreateViewEntity{CreateView: sqlparser.Clone(c.CreateView)}
}

func (c *CreateViewEntity) identicalOtherThanName(other *CreateViewEntity) bool {
Expand Down
5 changes: 5 additions & 0 deletions go/vt/sqlparser/ast_funcs.go
Original file line number Diff line number Diff line change
Expand Up @@ -2776,3 +2776,8 @@ func (lock Lock) GetHighestOrderLock(newLock Lock) Lock {
}
return lock
}

// Clone returns a deep copy of the SQLNode, typed as the original type
func Clone[K SQLNode](x K) K {
return CloneSQLNode(x).(K)
}
2 changes: 1 addition & 1 deletion go/vt/vtgate/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1592,7 +1592,7 @@ func (e *Executor) planPrepareStmt(ctx context.Context, vcursor *vcursorImpl, qu
ctx,
vcursor,
query,
sqlparser.CloneStatement(stmt),
sqlparser.Clone(stmt),
vcursor.marginComments,
map[string]*querypb.BindVariable{},
reservedVars, /* normalize */
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/ddl.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func buildCreateViewCommon(
// because we don't trust the schema tracker to have up-to-date info, we don't want to expand any SELECT * here
var expressions []sqlparser.SelectExprs
_ = sqlparser.VisitAllSelects(ddlSelect, func(p *sqlparser.Select, idx int) error {
expressions = append(expressions, sqlparser.CloneSelectExprs(p.SelectExprs))
expressions = append(expressions, sqlparser.Clone(p.SelectExprs))
return nil
})
selectPlan, err := createInstructionFor(ctx, sqlparser.String(ddlSelect), ddlSelect, reservedVars, vschema, enableOnlineDDL, enableDirectDDL)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ func splitAvgAggregations(ctx *plancontext.PlanningContext, aggr *Aggregator) (O

outputColumn := aeWrap(col.Expr)
outputColumn.As = sqlparser.NewIdentifierCI(col.ColumnName())
proj.addUnexploredExpr(sqlparser.CloneRefOfAliasedExpr(col), calcExpr)
proj.addUnexploredExpr(sqlparser.Clone(col), calcExpr)
col.Expr = sumExpr
found := false
for aggrOffset, aggregation := range aggr.Aggregations {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ func (p *joinPusher) countStar(ctx *plancontext.PlanningContext) (*sqlparser.Ali
// It returns the expression of the aggregation as it should be used in the parent Aggregator.
func (p *joinPusher) addAggr(ctx *plancontext.PlanningContext, aggr Aggr) sqlparser.Expr {
copyAggr := aggr
expr := sqlparser.CloneExpr(aggr.Original.Expr)
expr := sqlparser.Clone(aggr.Original.Expr)
copyAggr.Original = aeWrap(expr)
// copy dependencies so we can keep track of which side expressions need to be pushed to
ctx.SemTable.Direct[expr] = p.tableID
Expand All @@ -291,7 +291,7 @@ func (p *joinPusher) pushThroughAggr(aggr Aggr) {
// It returns the expression of the GroupBy as it should be used in the parent Aggregator.
func (p *joinPusher) addGrouping(ctx *plancontext.PlanningContext, gb GroupBy) sqlparser.Expr {
copyGB := gb
expr := sqlparser.CloneExpr(gb.Inner)
expr := sqlparser.Clone(gb.Inner)
// copy dependencies so we can keep track of which side expressions need to be pushed to
ctx.SemTable.CopyDependencies(gb.Inner, expr)
// if the column exists in the selection then copy it down to the pushed aggregator operator.
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/operators/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func createOperatorFromDelete(ctx *plancontext.PlanningContext, deleteStmt *sqlp
return createDeleteWithInputOp(ctx, deleteStmt)
}

delClone := sqlparser.CloneRefOfDelete(deleteStmt)
delClone := sqlparser.Clone(deleteStmt)
var vTbl *vindexes.Table
op, vTbl = createDeleteOperator(ctx, deleteStmt)

Expand Down Expand Up @@ -315,7 +315,7 @@ func addOrdering(ctx *plancontext.PlanningContext, orderBy sqlparser.OrderBy, op
continue
}
ordering.Order = append(ordering.Order, OrderBy{
Inner: sqlparser.CloneRefOfOrder(order),
Inner: sqlparser.Clone(order),
SimplifiedExpr: order.Expr,
})
}
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/horizon.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func newHorizon(src Operator, query sqlparser.SelectStatement) *Horizon {
func (h *Horizon) Clone(inputs []Operator) Operator {
klone := *h
klone.Source = inputs[0]
klone.ColumnAliases = sqlparser.CloneColumns(h.ColumnAliases)
klone.ColumnAliases = sqlparser.Clone(h.ColumnAliases)
klone.Columns = slices.Clone(h.Columns)
klone.ColumnsOffset = slices.Clone(h.ColumnsOffset)
klone.QP = h.QP
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/insert.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ func createOperatorFromInsert(ctx *plancontext.PlanningContext, ins *sqlparser.I

delStmt := &sqlparser.Delete{
Comments: ins.Comments,
TableExprs: sqlparser.TableExprs{sqlparser.CloneRefOfAliasedTableExpr(ins.Table)},
TableExprs: sqlparser.TableExprs{sqlparser.Clone(ins.Table)},
Where: sqlparser.NewWhere(sqlparser.WhereClause, whereExpr),
}
delOp := createOpFromStmt(ctx, delStmt, false, "")
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/limit.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type Limit struct {
func (l *Limit) Clone(inputs []Operator) Operator {
return &Limit{
Source: inputs[0],
AST: sqlparser.CloneRefOfLimit(l.AST),
AST: sqlparser.Clone(l.AST),
Top: l.Top,
Pushed: l.Pushed,
}
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/operators/phases.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,8 @@ func createDMLWithInput(ctx *plancontext.PlanningContext, op, src Operator, in *
targetQT := targetTable.QTable
qt := &QueryTable{
ID: targetQT.ID,
Alias: sqlparser.CloneRefOfAliasedTableExpr(targetQT.Alias),
Table: sqlparser.CloneTableName(targetQT.Table),
Alias: sqlparser.Clone(targetQT.Alias),
Table: sqlparser.Clone(targetQT.Table),
Predicates: []sqlparser.Expr{compExpr},
}

Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/projection.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ type (

func newProjExpr(ae *sqlparser.AliasedExpr) *ProjExpr {
return &ProjExpr{
Original: sqlparser.CloneRefOfAliasedExpr(ae),
Original: sqlparser.Clone(ae),
EvalExpr: ae.Expr,
ColExpr: ae.Expr,
}
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/projection_pushing.go
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ func splitUnexploredExpression(
alias string,
dt *DerivedTable,
) applyJoinColumn {
original := sqlparser.CloneRefOfAliasedExpr(pe.Original)
original := sqlparser.Clone(pe.Original)
expr := pe.ColExpr

var colName *sqlparser.ColName
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/operators/query_planning.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func planQuery(ctx *plancontext.PlanningContext, root Operator) Operator {
var selExpr sqlparser.SelectExprs
if horizon, isHorizon := root.(*Horizon); isHorizon {
sel := sqlparser.GetFirstSelect(horizon.Query)
selExpr = sqlparser.CloneSelectExprs(sel.SelectExprs)
selExpr = sqlparser.Clone(sel.SelectExprs)
}

output := runPhases(ctx, root)
Expand Down Expand Up @@ -252,7 +252,7 @@ func tryPushLimit(ctx *plancontext.PlanningContext, in *Limit) (Operator, *Apply
}

func createPushedLimit(ctx *plancontext.PlanningContext, src Operator, orig *Limit) Operator {
pushedLimit := sqlparser.CloneRefOfLimit(orig.AST)
pushedLimit := sqlparser.Clone(orig.AST)
if pushedLimit.Offset != nil {
// we can't push down an offset, so we need to convert it to a rowcount
// by adding it to the already existing rowcount, and then let the LIMIT running on the vtgate do the rest
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/operators/querygraph.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,8 @@ func (qg *QueryGraph) AddPredicate(ctx *plancontext.PlanningContext, expr sqlpar
func (qt *QueryTable) Clone() *QueryTable {
return &QueryTable{
ID: qt.ID,
Alias: sqlparser.CloneRefOfAliasedTableExpr(qt.Alias),
Table: sqlparser.CloneTableName(qt.Table),
Alias: sqlparser.Clone(qt.Alias),
Table: sqlparser.Clone(qt.Table),
Predicates: qt.Predicates,
IsInfSchema: qt.IsInfSchema,
}
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/subquery.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func (sq *SubQuery) Clone(inputs []Operator) Operator {
}
klone.JoinColumns = slices.Clone(sq.JoinColumns)
klone.Vars = maps.Clone(sq.Vars)
klone.Predicates = sqlparser.CloneExprs(sq.Predicates)
klone.Predicates = sqlparser.Clone(sq.Predicates)
return &klone
}

Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/subquery_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ func (sqb *SubQueryBuilder) pullOutValueSubqueries(
outerID semantics.TableSet,
isDML bool,
) (sqlparser.Expr, []*SubQuery) {
original := sqlparser.CloneExpr(expr)
original := sqlparser.Clone(expr)
sqe := extractSubQueries(ctx, expr, isDML)
if sqe == nil {
return nil, nil
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type (
func (to *Table) Clone([]Operator) Operator {
var columns []*sqlparser.ColName
for _, name := range to.Columns {
columns = append(columns, sqlparser.CloneRefOfColName(name))
columns = append(columns, sqlparser.Clone(name))
}
return &Table{
QTable: to.QTable,
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/operators/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,15 +338,15 @@ func createUpdateOperator(ctx *plancontext.PlanningContext, updStmt *sqlparser.U
// updClone is used in foreign key planning to create the selection statements to be used for verification and selection.
// If we encounter subqueries, we want to fix the updClone to use the replaced expression, so that the pulled out subquery's
// result is used everywhere instead of running the subquery multiple times, which is wasteful.
updClone := sqlparser.CloneRefOfUpdate(updStmt)
updClone := sqlparser.Clone(updStmt)
var tblInfo semantics.TableInfo
var err error
for idx, updExpr := range updStmt.Exprs {
expr, subqs := sqc.pullOutValueSubqueries(ctx, updExpr.Expr, outerID, true)
if len(subqs) == 0 {
expr = updExpr.Expr
} else {
updClone.Exprs[idx].Expr = sqlparser.CloneExpr(expr)
updClone.Exprs[idx].Expr = sqlparser.Clone(expr)
ctx.SemTable.UpdateChildFKExpr(updExpr, expr)
}
proj := newProjExpr(aeWrap(expr))
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/upsert.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func createUpsertOperator(ctx *plancontext.PlanningContext, ins *sqlparser.Inser
updOp := createOpFromStmt(ctx, upd, false, "")

// replan insert statement without on duplicate key update.
newInsert := sqlparser.CloneRefOfInsert(ins)
newInsert := sqlparser.Clone(ins)
newInsert.OnDup = nil
newInsert.Rows = sqlparser.Values{row}
insOp = createOpFromStmt(ctx, newInsert, false, "")
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtgate/planbuilder/simplifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func TestSimplifyBuggyQuery(t *testing.T) {
}
stmt, reserved, err := sqlparser.NewTestParser().Parse2(query)
require.NoError(t, err)
rewritten, _ := sqlparser.RewriteAST(sqlparser.CloneStatement(stmt), vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil)
rewritten, _ := sqlparser.RewriteAST(sqlparser.Clone(stmt), vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil)
reservedVars := sqlparser.NewReservedVars("vtg", reserved)

simplified := simplifier.SimplifyStatement(
Expand All @@ -68,7 +68,7 @@ func TestSimplifyPanic(t *testing.T) {
}
stmt, reserved, err := sqlparser.NewTestParser().Parse2(query)
require.NoError(t, err)
rewritten, _ := sqlparser.RewriteAST(sqlparser.CloneStatement(stmt), vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil)
rewritten, _ := sqlparser.RewriteAST(sqlparser.Clone(stmt), vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil)
reservedVars := sqlparser.NewReservedVars("vtg", reserved)

simplified := simplifier.SimplifyStatement(
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtgate/semantics/early_rewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ func (r *earlyRewriter) rewriteAliasesInGroupBy(node sqlparser.Expr, sel *sqlpar
return
}

cursor.Replace(sqlparser.CloneExpr(item.expr))
cursor.Replace(sqlparser.Clone(item.expr))
}
}, nil)

Expand Down
Loading
Loading