pingcap / pingcap/tidb

batch limit statement should not execute transaction with bulk dml

Open
#60,447 0 comments 0 reactions 0 assignees View on GitHub
severity/moderate sig/transaction type/bug
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Bug Report

Please answer these questions before submitting your issue. Thanks!

### 1. Minimal reproduce step (Required)

```sql
MySQL [test]> create table _sbtest1 like sbtest1;
Query OK, 0 rows affected (0.024 sec)

MySQL [test]> set session tidb_dml_type=bulk;
Query OK, 0 rows affected (0.000 sec)

MySQL [test]> batch on id limit 1000 insert into _sbtest1 select * from sbtest1;
+----------------+---------------+
| number of jobs | job status |
+----------------+---------------+
| 100 | all succeeded |
+----------------+---------------+
1 row in set (0.919 sec)

```

### 2. What did you expect to see? (Required)

No bulk dml log.

### 3. What did you see instead (Required)

```log
[2025/04/09 15:20:05.535 +09:00] [INFO] [nontransactional.go:412] ["start a Non-transactional DML"] [conn=696254504] [session_alias=] [job="job id: 2, estimated size: 1000, sql: INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 1001 AND 2000"] [totalJobCount=100]
[2025/04/09 15:20:05.541 +09:00] [INFO] [txn.go:583] ["[pipelined dml] flushed memdb to kv store"] [startTS=457226218503405573] [generation=1] [session=696254504] [keys=2000] [size=254kB] ["flushed keys"=2000] ["flushed size"=254kB] ["take time"=2.965908ms]
[2025/04/09 15:20:05.541 +09:00] [INFO] [pipelined_flush.go:304] ["[pipelined dml] start to commit transaction"] [conn=696254504] [session_alias=] [keys=2000] [flush_wait_duration=2.989378ms] [total_duration=5.416475ms] ["memdb traversal cache hit"=4000] ["memdb traversal cache miss"=3000] [size=254kB] [startTS=457226218503405573]
[2025/04/09 15:20:05.541 +09:00] [INFO] [pipelined_flush.go:336] ["[pipelined dml] transaction is committed"] [conn=696254504] [session_alias=] [startTS=457226218503405573] [commitTS=457226218503405575]
[2025/04/09 15:20:05.541 +09:00] [INFO] [nontransactional.go:429] ["Non-transactional DML SQL finished successfully"] [conn=696254504] [session_alias=] [jobID=2] [jobSize=1000] [dmlSQL="INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 1001 AND 2000"]
[2025/04/09 15:20:05.541 +09:00] [INFO] [nontransactional.go:412] ["start a Non-transactional DML"] [conn=696254504] [session_alias=] [job="job id: 3, estimated size: 1000, sql: INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 2001 AND 3000"] [totalJobCount=100]
[2025/04/09 15:20:05.541 +09:00] [INFO] [range_task.go:167] ["range task started"] [name=pipelined-dml-commit-457226218503405573] [startKey=7480000000000000735f698000000000000001038000000000006e4d03800000000000042e] [endKey=7480000000000000735f7280000000000007d0] [concurrency=8]
[2025/04/09 15:20:05.547 +09:00] [INFO] [txn.go:583] ["[pipelined dml] flushed memdb to kv store"] [startTS=457226218503405576] [generation=1] [session=696254504] [keys=2000] [size=254kB] ["flushed keys"=2000] ["flushed size"=254kB] ["take time"=3.311148ms]
[2025/04/09 15:20:05.547 +09:00] [INFO] [pipelined_flush.go:304] ["[pipelined dml] start to commit transaction"] [conn=696254504] [session_alias=] [keys=2000] [flush_wait_duration=3.337808ms] [total_duration=5.801745ms] ["memdb traversal cache hit"=4000] ["memdb traversal cache miss"=3000] [size=254kB] [startTS=457226218503405576]
[2025/04/09 15:20:05.548 +09:00] [INFO] [pipelined_flush.go:336] ["[pipelined dml] transaction is committed"] [conn=696254504] [session_alias=] [startTS=457226218503405576] [commitTS=457226218516512769]
[2025/04/09 15:20:05.548 +09:00] [INFO] [nontransactional.go:429] ["Non-transactional DML SQL finished successfully"] [conn=696254504] [session_alias=] [jobID=3] [jobSize=1000] [dmlSQL="INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 2001 AND 3000"]
[2025/04/09 15:20:05.548 +09:00] [INFO] [nontransactional.go:412] ["start a Non-transactional DML"] [conn=696254504] [session_alias=] [job="job id: 4, estimated size: 1000, sql: INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 3001 AND 4000"] [totalJobCount=100]
[2025/04/09 15:20:05.548 +09:00] [INFO] [range_task.go:167] ["range task started"] [name=pipelined-dml-commit-457226218503405576] [startKey=7480000000000000735f6980000000000000010380000000000064bb0380000000000008a5] [endKey=7480000000000000735f728000000000000bb8] [concurrency=8]
[2025/04/09 15:20:05.553 +09:00] [INFO] [range_task.go:276] ["range task finished"] [name=pipelined-dml-commit-457226218503405569] [startKey=7480000000000000735f698000000000000001038000000000005a380380000000000001e0] [endKey=7480000000000000735f7280000000000003e8] ["cost time"=18.128218ms] ["completed regions"=1]
[2025/04/09 15:20:05.553 +09:00] [INFO] [pipelined_flush.go:499] ["[pipelined dml] resolve flushed locks done"] [txn-status=commit] ["resolved regions"=1] [startTS=457226218503405569] [commitTS=457226218503405572] [session=696254504]
[2025/04/09 15:20:05.555 +09:00] [INFO] [txn.go:583] ["[pipelined dml] flushed memdb to kv store"] [startTS=457226218516512770] [generation=1] [session=696254504] [keys=2000] [size=254kB] ["flushed keys"=2000] ["flushed size"=254kB] ["take time"=3.522319ms]
[2025/04/09 15:20:05.555 +09:00] [INFO] [pipelined_flush.go:304] ["[pipelined dml] start to commit transaction"] [conn=696254504] [session_alias=] [keys=2000] [flush_wait_duration=3.53866ms] [total_duration=6.664038ms] ["memdb traversal cache hit"=4000] ["memdb traversal cache miss"=3000] [size=254kB] [startTS=457226218516512770]
[2025/04/09 15:20:05.556 +09:00] [INFO] [pipelined_flush.go:336] ["[pipelined dml] transaction is committed"] [conn=696254504] [session_alias=] [startTS=457226218516512770] [commitTS=457226218516512771]
[2025/04/09 15:20:05.556 +09:00] [INFO] [nontransactional.go:429] ["Non-transactional DML SQL finished successfully"] [conn=696254504] [session_alias=] [jobID=4] [jobSize=1000] [dmlSQL="INSERT INTO `test`.`_sbtest1` SELECT * FROM `test`.`sbtest1` WHERE `id` BETWEEN 3001 AND 4000"]
```

### 4. What is your TiDB version? (Required)

```
Release Version: v9.0.0-beta.1.pre-434-gddfd52a
Edition: Community
Git Commit Hash: ddfd52a8151b7562236441532848d57a4f4f1eb3
Git Branch: HEAD
UTC Build Time: 2025-03-18 08:34:43
GoVersion: go1.23.7
Race Enabled: false
Check Table Before Drop: false
Store: tikv
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.