Skip to content

Commit

Permalink
planner: fix pessimistic-auto-commit not working for point plans
Browse files Browse the repository at this point in the history
Signed-off-by: zyguan <zhongyangguan@gmail.com>
  • Loading branch information
zyguan authored and ti-chi-bot committed Dec 16, 2022
1 parent ed33fde commit 14f9065
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
3 changes: 2 additions & 1 deletion planner/core/point_get_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"unsafe"

"github.com/pingcap/errors"
"github.com/pingcap/tidb/config"
"github.com/pingcap/tidb/expression"
"github.com/pingcap/tidb/infoschema"
"github.com/pingcap/tidb/kv"
Expand Down Expand Up @@ -608,7 +609,7 @@ func getLockWaitTime(ctx sessionctx.Context, lockInfo *ast.SelectLockInfo) (lock
// autocommit to 0. If autocommit is enabled, the rows matching the specification are not locked.
// See https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html
sessVars := ctx.GetSessionVars()
if !sessVars.IsAutocommit() || sessVars.InTxn() {
if !sessVars.IsAutocommit() || sessVars.InTxn() || config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Load() {
lock = true
waitTime = sessVars.LockWaitTimeout
if lockInfo.LockType == ast.SelectLockForUpdateWaitN {
Expand Down
9 changes: 8 additions & 1 deletion tests/realtikvtest/pessimistictest/pessimistic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3074,13 +3074,17 @@ func TestPessimisticAutoCommitTxn(t *testing.T) {

tk.MustExec("set tidb_txn_mode = 'pessimistic'")
tk.MustExec("drop table if exists t")
tk.MustExec("create table t (i int)")
tk.MustExec("create table t (i int primary key)")
tk.MustExec("insert into t values (1)")
tk.MustExec("set autocommit = on")

rows := tk.MustQuery("explain update t set i = -i").Rows()
explain := fmt.Sprintf("%v", rows[1])
require.NotRegexp(t, ".*SelectLock.*", explain)
rows = tk.MustQuery("explain update t set i = -i where i = -1").Rows()
explain = fmt.Sprintf("%v", rows[1])
require.Regexp(t, ".*handle:-1.*", explain)
require.NotRegexp(t, ".*handle:-1, lock.*", explain)

originCfg := config.GetGlobalConfig()
defer config.StoreGlobalConfig(originCfg)
Expand All @@ -3091,6 +3095,9 @@ func TestPessimisticAutoCommitTxn(t *testing.T) {
rows = tk.MustQuery("explain update t set i = -i").Rows()
explain = fmt.Sprintf("%v", rows[1])
require.Regexp(t, ".*SelectLock.*", explain)
rows = tk.MustQuery("explain update t set i = -i where i = -1").Rows()
explain = fmt.Sprintf("%v", rows[1])
require.Regexp(t, ".*handle:-1, lock.*", explain)
}

func TestPessimisticLockOnPartition(t *testing.T) {
Expand Down

0 comments on commit 14f9065

Please sign in to comment.