Skip to content

Commit

Permalink
re-instate the derived table rewriting
Browse files Browse the repository at this point in the history
Signed-off-by: Andres Taylor <[email protected]>
  • Loading branch information
systay committed Feb 28, 2025
1 parent 1c1260d commit d5105e0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion go/vt/vtgate/planbuilder/operators/SQL_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,7 @@ func buildProjection(op *Projection, qb *queryBuilder) {

func buildApplyJoin(op *ApplyJoin, qb *queryBuilder) {
predicates := slice.Map(op.JoinPredicates.columns, func(jc applyJoinColumn) sqlparser.Expr {
qb.ctx.SkipJoinPredicatesTODO(jc.JoinPredicateID)
qb.ctx.SkipJoinPredicates(jc.JoinPredicateID)
return jc.Original
})
pred := sqlparser.AndExpressions(predicates...)
Expand Down
28 changes: 14 additions & 14 deletions go/vt/vtgate/planbuilder/plancontext/planning_context.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package plancontext

import (
"io"
"slices"

"vitess.io/vitess/go/vt/vtgate/planbuilder/operators/predicates"

Expand All @@ -37,7 +38,7 @@ type PlanningContext struct {

// skipPredicates tracks predicates that should be skipped, typically when
// a join predicate is reverted to its original form during planning.
skipJoinPredicates map[predicates.ID]any
skipJoinPredicates []predicates.ID

PlannerVersion querypb.ExecuteOptions_PlannerVersion

Expand Down Expand Up @@ -102,14 +103,13 @@ func CreatePlanningContext(stmt sqlparser.Statement,
vschema.PlannerWarning(semTable.Warning)

return &PlanningContext{
ReservedVars: reservedVars,
SemTable: semTable,
VSchema: vschema,
skipJoinPredicates: map[predicates.ID]any{},
PlannerVersion: version,
ReservedArguments: map[sqlparser.Expr]string{},
Statement: stmt,
PredTracker: predicates.NewTracker(),
ReservedVars: reservedVars,
SemTable: semTable,
VSchema: vschema,
PlannerVersion: version,
ReservedArguments: map[sqlparser.Expr]string{},
Statement: stmt,
PredTracker: predicates.NewTracker(),
}, nil
}

Expand Down Expand Up @@ -141,17 +141,17 @@ func (ctx *PlanningContext) GetReservedArgumentFor(expr sqlparser.Expr) string {
func (ctx *PlanningContext) ShouldSkip(expr sqlparser.Expr) bool {
var found bool
if jp, ok := expr.(*predicates.JoinPredicate); ok {
_, found = ctx.skipJoinPredicates[jp.ID]
found = slices.Contains(ctx.skipJoinPredicates, jp.ID)
}
return found
}

func (ctx *PlanningContext) SkipJoinPredicatesTODO(id predicates.ID) {
ctx.skipJoinPredicates[id] = struct{}{}
func (ctx *PlanningContext) SkipJoinPredicates(id predicates.ID) {
ctx.skipJoinPredicates = append(ctx.skipJoinPredicates, id)
}

func (ctx *PlanningContext) RewriteDerivedTableExpression(expr sqlparser.Expr, tableInfo semantics.TableInfo) sqlparser.Expr {
//modifiedExpr := semantics.RewriteDerivedTableExpression(expr, tableInfo)
modifiedExpr := semantics.RewriteDerivedTableExpression(expr, tableInfo)
//for key, exprs := range ctx.joinPredicates {
// for _, rhsExpr := range exprs {
// if ctx.SemTable.EqualsExpr(expr, rhsExpr) {
Expand All @@ -160,7 +160,7 @@ func (ctx *PlanningContext) RewriteDerivedTableExpression(expr sqlparser.Expr, t
// }
// }
//}
return expr
return modifiedExpr
}

// TypeForExpr returns the type of the given expression, with nullable set if the expression is from an outer table.
Expand Down

0 comments on commit d5105e0

Please sign in to comment.