From e9fb2c7a04c5f30fd38ae11d047b9d440014543b Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 28 Jan 2025 08:20:06 -0600 Subject: [PATCH] Remove routing multi equal optimization Signed-off-by: Florent Poinsard --- go/vt/vtgate/engine/routing.go | 33 +++---------------- go/vt/vtgate/engine/routing_parameter_test.go | 16 --------- 2 files changed, 5 insertions(+), 44 deletions(-) diff --git a/go/vt/vtgate/engine/routing.go b/go/vt/vtgate/engine/routing.go index aba0bccc999..dd6143f6aa4 100644 --- a/go/vt/vtgate/engine/routing.go +++ b/go/vt/vtgate/engine/routing.go @@ -21,8 +21,6 @@ import ( "encoding/json" "strconv" - "golang.org/x/exp/maps" - "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/key" "vitess.io/vitess/go/vt/log" @@ -429,37 +427,16 @@ func (rp *RoutingParameters) multiEqual(ctx context.Context, vcursor VCursor, bi if err != nil { return nil, nil, err } - rss, bvs, err := resolveShards(ctx, vcursor, rp.Vindex.(vindexes.SingleColumn), rp.Keyspace, value.TupleValues()) + rss, _, err := resolveShards(ctx, vcursor, rp.Vindex.(vindexes.SingleColumn), rp.Keyspace, value.TupleValues()) if err != nil { return nil, nil, err } - tbv, ok := rp.Values[0].(*evalengine.TupleBindVariable) - if !ok { - multiBindVars := make([]map[string]*querypb.BindVariable, len(rss)) - for i := range multiBindVars { - multiBindVars[i] = bindVars - } - return rss, multiBindVars, nil - } - - var resultRss []*srvtopo.ResolvedShard - var resultBvs []map[string]*querypb.BindVariable - for i, rssVals := range rss { - resultRss = append(resultRss, rssVals) - - clonedBindVars := maps.Clone(bindVars) - - newBv := &querypb.BindVariable{ - Type: querypb.Type_TUPLE, - Values: bvs[i], - } - - clonedBindVars[tbv.Key] = newBv - - resultBvs = append(resultBvs, clonedBindVars) + multiBindVars := make([]map[string]*querypb.BindVariable, len(rss)) + for i := range multiBindVars { + multiBindVars[i] = bindVars } - return resultRss, resultBvs, nil + return rss, multiBindVars, nil } func (rp *RoutingParameters) multiEqualMultiCol(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) ([]*srvtopo.ResolvedShard, []map[string]*querypb.BindVariable, error) { diff --git a/go/vt/vtgate/engine/routing_parameter_test.go b/go/vt/vtgate/engine/routing_parameter_test.go index b292f57e643..596a2f7f424 100644 --- a/go/vt/vtgate/engine/routing_parameter_test.go +++ b/go/vt/vtgate/engine/routing_parameter_test.go @@ -68,20 +68,4 @@ func TestFindRouteValuesJoin(t *testing.T) { require.NoError(t, err) require.Len(t, rss, 2) require.Len(t, bvs, 2) - - expectedIdsPerShard := [][]int64{ - {1, 2}, - {3, 4}, - } - for i, ids := range expectedIdsPerShard { - var s []int64 - for _, value := range bvs[i][valueBvName].Values { - v := sqltypes.ProtoToValue(value) - require.Equal(t, sqltypes.Int64, v.Type()) - i, err := v.ToInt64() - require.NoError(t, err) - s = append(s, i) - } - require.Equal(t, ids, s) - } }