Skip to content

Commit

Permalink
ddl: simplify TestMDLPreparePlanCacheExecuteInsert (#58113)
Browse files Browse the repository at this point in the history
ref #56733
  • Loading branch information
D3Hunter authored Dec 10, 2024
1 parent 0082d58 commit 93295c2
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 28 deletions.
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.4.1
36 changes: 8 additions & 28 deletions pkg/ddl/tests/metadatalock/mdl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1016,26 +1016,14 @@ func TestMDLPreparePlanCacheExecuteInsert(t *testing.T) {
tk := testkit.NewTestKitWithSession(t, store, conn1.Context().Session)
conn2 := server.CreateMockConn(t, sv)
tkDDL := testkit.NewTestKitWithSession(t, store, conn2.Context().Session)
conn3 := server.CreateMockConn(t, sv)
tk3 := testkit.NewTestKitWithSession(t, store, conn3.Context().Session)
tk.MustExec("use test")
tk.MustExec("set global tidb_enable_metadata_lock=1")
tk.MustExec("create table t(a int primary key, b int);")
tk.MustExec("create table t2(a int);")
tk.MustExec("insert into t values(1, 1), (2, 2), (3, 3), (4, 4);")

tk.MustExec(`begin`)
tk.MustExec(`prepare delete_stmt from 'delete from t where a = ?'`)
tk.MustExec(`prepare insert_stmt from 'insert into t values (?, ?)'`)
tk.MustExec(`commit`)

tk.MustExec(`begin`)
tk.MustExec(`set @a = 4, @b= 4;`)
tk.MustExec(`execute delete_stmt using @a;`)
tk.MustExec(`execute insert_stmt using @a, @b;`)
tk.MustExec(`commit`)

tk.MustExec("begin")
tk.MustExec(`set @a=4, @b=4;`)

ch := make(chan struct{})

Expand All @@ -1048,19 +1036,10 @@ func TestMDLPreparePlanCacheExecuteInsert(t *testing.T) {
switch idx.BackfillState {
case model.BackfillStateRunning:
if first {
// generate plan, cache it, and make some row change to make
// sure backfill state 'merging' is not skipped.
tk.MustExec(`begin`)
tk.MustExec(`set @a=9;`)
tk.MustExec(`execute delete_stmt using @a;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0"))
tk.MustExec(`set @a=6, @b=4;`)
tk.MustExec(`execute insert_stmt using @a, @b;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0"))
tk.MustExec(`commit`)
tk.MustExec(`begin`)
tk.MustExec(`set @a=4;`)
tk.MustExec(`execute delete_stmt using @a;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("1"))
tk.MustExec(`set @a=4, @b=4;`)
tk.MustExec(`delete from t where a = 4;`)
tk.MustExec(`execute insert_stmt using @a, @b;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0"))
tk.MustExec(`commit`)
Expand All @@ -1069,17 +1048,18 @@ func TestMDLPreparePlanCacheExecuteInsert(t *testing.T) {
// Activate txn.
tk.MustExec("select * from t2")
first = false
tk3.MustExec("insert into test.t values(10000, 1000)")
return
}
}
}
})

ddl.MockDMLExecutionMerging = func() {
tk.MustExec(`execute delete_stmt using @a;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0"))
tk.MustExec(`delete from t where a = 4;`)
// we must generate a new plan here, because the schema has changed since
// the last plan was generated.
tk.MustExec(`execute insert_stmt using @a, @b;`)
tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0"))
tk.MustExec("commit")
}
require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDMLExecutionMerging", "1*return(true)->return(false)"))
Expand Down
2 changes: 2 additions & 0 deletions pkg/table/tables/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,8 @@ func (c *index) create(sctx table.MutateContext, txn kv.Transaction, indexedValu
tempVal := tablecodec.TempIndexValueElem{Value: idxVal, KeyVer: keyVer, Distinct: distinct}
val = tempVal.Encode(nil)
}
// during some step of add-index, such as in write-reorg state, this
// key is THE temp index key.
err = txn.GetMemBuffer().Set(key, val)
if err != nil {
return nil, err
Expand Down

0 comments on commit 93295c2

Please sign in to comment.