Skip to content

LOAD DATA behavior change causes upgrade issue #19809

@ghost

Description

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

See my comment here and pingcap/docs#3838

There is an issue in that to restore the previous behavior for LOAD DATA, because tidb_dml_batch_size is only session scope. Therefore, you must SET tidb_dml_batch_size=20000 for each session, but there are some common cases where that is hard to do:

  • It is a closed source app (and they can't modify the code)
  • The client library handles session scope in a weird way (by default Golang uses a connection pool, and will only provide session scope guarantees with a connection pool).

Because this is a breaking change, I propose allowing GLOBAL | SESSION scope. This will allow an upgrade path, because the TiDB server can be set to the previous behavior.

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

A small change: tidb_dml_batch_size is SESSION | GLOBAL scope. I prefer the new behavior, I am just concerned about upgrades.

3. What did you see instead (Required)

SESSION scope only

4. What is your TiDB version? (Required)

mysql> select tidb_version()\G
*************************** 1. row ***************************
tidb_version(): Release Version: v4.0.0-beta.2-1142-gebb557386
Edition: Community
Git Commit Hash: ebb55738695d01048f747a43592331e3e2443988
Git Branch: master
UTC Build Time: 2020-09-03 15:56:39
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false
1 row in set (0.00 sec)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions