From aa51b46ead53bdbcc1926c606f8214eb99739df5 Mon Sep 17 00:00:00 2001 From: Zhou Kunqin <25057648+time-and-fate@users.noreply.github.com> Date: Mon, 16 Jan 2023 22:29:49 +0800 Subject: [PATCH] executor: fix concurrent use of `testkit` in tests and add nil check (#40627) close pingcap/tidb#40206 --- executor/executor_test.go | 6 ++++-- planner/core/encode.go | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/executor/executor_test.go b/executor/executor_test.go index a3b2ba0b221ab..6a454bb85a9ea 100644 --- a/executor/executor_test.go +++ b/executor/executor_test.go @@ -5556,6 +5556,8 @@ func TestAdmin(t *testing.T) { })) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") tk.MustExec("drop table if exists admin_test") tk.MustExec("create table admin_test (c1 int, c2 int, c3 int default 1, index (c1))") tk.MustExec("insert admin_test (c1) values (1),(2),(NULL)") @@ -5680,7 +5682,7 @@ func TestAdmin(t *testing.T) { // check that the result set has no duplication defer wg.Done() for i := 0; i < 10; i++ { - result := tk.MustQuery(`admin show ddl job queries 20`) + result := tk2.MustQuery(`admin show ddl job queries 20`) rows := result.Rows() rowIDs := make(map[string]struct{}) for _, row := range rows { @@ -5711,7 +5713,7 @@ func TestAdmin(t *testing.T) { // check that the result set has no duplication defer wg2.Done() for i := 0; i < 10; i++ { - result := tk.MustQuery(`admin show ddl job queries limit 3 offset 2`) + result := tk2.MustQuery(`admin show ddl job queries limit 3 offset 2`) rows := result.Rows() rowIDs := make(map[string]struct{}) for _, row := range rows { diff --git a/planner/core/encode.go b/planner/core/encode.go index 14931d4d1ef0a..bf02059dafdda 100644 --- a/planner/core/encode.go +++ b/planner/core/encode.go @@ -262,6 +262,9 @@ type planDigester struct { // NormalizeFlatPlan normalizes a FlatPhysicalPlan and generates plan digest. func NormalizeFlatPlan(flat *FlatPhysicalPlan) (normalized string, digest *parser.Digest) { + if flat == nil { + return "", parser.NewDigest(nil) + } selectPlan, selectPlanOffset := flat.Main.GetSelectPlan() if len(selectPlan) == 0 || !selectPlan[0].IsPhysicalPlan { return "", parser.NewDigest(nil)