From 82b041fd4663c82511a6db1795365e944a32564d Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 5 Oct 2021 23:07:44 +0530 Subject: [PATCH 1/3] shard targeted show query test Signed-off-by: Harshit Gangal --- go/vt/vtgate/executor.go | 6 +++--- go/vt/vtgate/executor_test.go | 26 ++++++++++++++++++++++++++ go/vt/vtgate/querylogz.go | 6 +++--- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 6faa28a6815..ee1e62f5869 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -1358,9 +1358,9 @@ func (e *Executor) getPlan(vcursor *vcursorImpl, sql string, comments sqlparser. } planHash := sha256.New() - planHash.Write([]byte(vcursor.planPrefixKey())) - planHash.Write([]byte{':'}) - planHash.Write(hack.StringBytes(query)) + _, _ = planHash.Write([]byte(vcursor.planPrefixKey())) + _, _ = planHash.Write([]byte{':'}) + _, _ = planHash.Write(hack.StringBytes(query)) planKey := hex.EncodeToString(planHash.Sum(nil)) if plan, ok := e.plans.Get(planKey); ok { diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index a994225e43e..7c0ee7900fc 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -946,6 +946,32 @@ func TestExecutorShow(t *testing.T) { assert.EqualError(t, err, want, query) } +func TestExecutorShowTargeted(t *testing.T) { + executor, _, sbc2, _ := createLegacyExecutorEnv() + session := NewSafeSession(&vtgatepb.Session{TargetString: "TestExecutor/40-60"}) + + queries := []string{ + "show databases", + "show variables like 'read_only'", + "show collation", + "show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'", + "show tables", + fmt.Sprintf("show tables from %v", KsTestUnsharded), + "show create table user_seq", + "show full columns from table1", + "show plugins", + "show warnings", + } + + for _, sql := range queries { + _, err := executor.Execute(ctx, "TestExecutorShowTargeted", session, sql, nil) + require.NoError(t, err) + assert.NotZero(t, len(sbc2.Queries), "Tablet should have received 'show' query") + lastQuery := sbc2.Queries[len(sbc2.Queries)-1].Sql + assert.Equal(t, sql, lastQuery, "Got: %v, want %v", lastQuery, sql) + } +} + func TestExecutorUse(t *testing.T) { executor, _, _, _ := createLegacyExecutorEnv() session := NewSafeSession(&vtgatepb.Session{Autocommit: true, TargetString: "@primary"}) diff --git a/go/vt/vtgate/querylogz.go b/go/vt/vtgate/querylogz.go index 69a319d8b1c..187c687bf52 100644 --- a/go/vt/vtgate/querylogz.go +++ b/go/vt/vtgate/querylogz.go @@ -105,9 +105,9 @@ func querylogzHandler(ch chan interface{}, w http.ResponseWriter, r *http.Reques stats, ok := out.(*LogStats) if !ok { err := fmt.Errorf("unexpected value in %s: %#v (expecting value of type %T)", QueryLogger.Name(), out, &LogStats{}) - io.WriteString(w, ``) - io.WriteString(w, err.Error()) - io.WriteString(w, "") + _, _ = io.WriteString(w, ``) + _, _ = io.WriteString(w, err.Error()) + _, _ = io.WriteString(w, "") log.Error(err) continue } From 48a73b6808bed649364703748e790e0f36102923 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 5 Oct 2021 23:08:40 +0530 Subject: [PATCH 2/3] show query to use targeted destination Signed-off-by: Harshit Gangal --- go/vt/vtgate/planbuilder/builder.go | 2 +- go/vt/vtgate/planbuilder/show.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index c2e03759bca..d8e14ce3389 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -202,7 +202,7 @@ func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars * // Empty by design. Not executed by a plan return nil, nil case *sqlparser.Show: - return buildShowPlan(stmt, vschema) + return buildRoutePlan(stmt, reservedVars, vschema, buildShowPlan) case *sqlparser.LockTables: return buildRoutePlan(stmt, reservedVars, vschema, buildLockPlan) case *sqlparser.UnlockTables: diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index 00f40926da1..7c7e1cf3179 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -41,8 +41,9 @@ const ( charset = "charset" ) -func buildShowPlan(stmt *sqlparser.Show, vschema ContextVSchema) (engine.Primitive, error) { - switch show := stmt.Internal.(type) { +func buildShowPlan(stmt sqlparser.Statement, _ *sqlparser.ReservedVars, vschema ContextVSchema) (engine.Primitive, error) { + showStmt := stmt.(*sqlparser.Show) + switch show := showStmt.Internal.(type) { case *sqlparser.ShowBasic: return buildShowBasicPlan(show, vschema) case *sqlparser.ShowCreate: From 6110a0f45b4e5548023a9e51d0710001b45f1b2e Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 5 Oct 2021 23:59:31 +0530 Subject: [PATCH 3/3] removed show tables from executor other test Signed-off-by: Harshit Gangal --- go/vt/vtgate/executor_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 7c0ee7900fc..0df4ac0b0f6 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -1082,7 +1082,6 @@ func TestExecutorOther(t *testing.T) { } stmts := []string{ - "show tables", "analyze table t1", "describe select * from t1", "explain select * from t1",