Skip to content

Commit 2836199

Browse files
Better support for merging UNION routes that use IN conditions.
Signed-off-by: Arthur Schreiber <[email protected]>
1 parent 8665230 commit 2836199

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

go/vt/vtgate/planbuilder/operators/route_planning.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,13 @@ func gen4ValuesEqual(ctx *plancontext.PlanningContext, a, b []sqlparser.Expr) (b
486486

487487
func gen4ValEqual(ctx *plancontext.PlanningContext, a, b sqlparser.Expr) (bool, *engine.Condition) {
488488
switch a := a.(type) {
489+
case sqlparser.ValTuple:
490+
if b, ok := b.(sqlparser.ValTuple); ok {
491+
return gen4ValuesEqual(ctx, a, b)
492+
}
493+
494+
return false
495+
489496
case *sqlparser.ColName:
490497
if b, ok := b.(*sqlparser.ColName); ok {
491498
if !a.Name.Equal(b.Name) {

go/vt/vtgate/planbuilder/operators/union_merging.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,6 @@ func tryMergeUnionShardedRouting(
146146

147147
scatterA := tblA.RouteOpCode == engine.Scatter
148148
scatterB := tblB.RouteOpCode == engine.Scatter
149-
uniqueA := tblA.RouteOpCode == engine.EqualUnique
150-
uniqueB := tblB.RouteOpCode == engine.EqualUnique
151149

152150
switch {
153151
case scatterA:
@@ -156,7 +154,11 @@ func tryMergeUnionShardedRouting(
156154
case scatterB:
157155
return createMergedUnion(ctx, routeA, routeB, exprsA, exprsB, distinct, tblB, nil)
158156

159-
case uniqueA && uniqueB:
157+
case tblA.RouteOpCode == engine.EqualUnique && tblB.RouteOpCode == engine.EqualUnique:
158+
fallthrough
159+
case tblA.RouteOpCode == engine.Equal && tblB.RouteOpCode == engine.Equal:
160+
fallthrough
161+
case tblA.RouteOpCode == engine.IN && tblB.RouteOpCode == engine.IN:
160162
aVdx := tblA.SelectedVindex()
161163
bVdx := tblB.SelectedVindex()
162164
aExpr := tblA.VindexExpressions()

0 commit comments

Comments
 (0)