pingcap / pingcap/tidb

dumpling fails during dump of table with invisible primary key

Open
#60,515 2 comments 0 reactions 0 assignees View on GitHub
component/dumpling impact/panic may-affects-6.1 may-affects-6.5 may-affects-7.1 may-affects-7.5 may-affects-8.1 may-affects-8.5 severity/major 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)

MySQL 8.4:

```
> create table test (name varchar(100));

> show create table test;

CREATE TABLE `test` (
`my_row_id` bigint unsigned NOT NULL AUTO_INCREMENT /*!80023 INVISIBLE */,
`name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`my_row_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

> show variables like '%primary%';
+---------------------------------------+-------+
| Variable_name | Value |
+---------------------------------------+-------+
| group_replication_single_primary_mode | ON |
| sql_generate_invisible_primary_key | ON |
| sql_require_primary_key | ON |
+---------------------------------------+-------+

$ tiup dumpling .... -B testdb -T testdb.test
```

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

successful dump

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

```
panic: runtime error: index out of range [1] with length 1

goroutine 45 [running]:
github.com/pingcap/tidb/dumpling/export.(*RowReceiverArr).BindAddress(0xc0000e8c20, {0xc0000e8ae0, 0x2, 0x2})
github.com/pingcap/tidb/dumpling/export/sql_type.go:207 +0xdc
github.com/pingcap/tidb/dumpling/export.decodeFromRows(0xc000d3c000, {0xc0000e8ae0, 0x2, 0x2}, {0x2b13680?, 0xc0000e8c20?})
github.com/pingcap/tidb/dumpling/export/ir.go:68 +0x39
github.com/pingcap/tidb/dumpling/export.(*rowIter).Decode(0x2638e86?, {0x2b13680?, 0xc0000e8c20?})
github.com/pingcap/tidb/dumpling/export/ir_impl.go:38 +0x3b
github.com/pingcap/tidb/dumpling/export.WriteInsert(0xc000eb1a28, 0xc0004b3b08, {0x2b4caf8, 0xc000ca4280}, {0x2b36c70?, 0xc000722550?}, {0x2b1ce68, 0xc000d1e200}, 0xc000cbc960)
github.com/pingcap/tidb/dumpling/export/writer_util.go:233 +0xaff
github.com/pingcap/tidb/dumpling/export.FileFormat.WriteInsert(0x2b4bdb0?, 0xc000cc2198?, 0xc000d54060?, {0x2b4caf8?, 0xc000ca4280?}, {0x2b36c70?, 0xc000722550?}, {0x2b1ce68?, 0xc000d1e200?}, 0xc000cbc960)
github.com/pingcap/tidb/dumpling/export/writer_util.go:667 +0xba
github.com/pingcap/tidb/dumpling/export.(*Writer).tryToWriteTableData(0xc000d618c0, 0xc000eb1a28, {0x2b4caf8, 0xc000ca4280}, {0x2b36c70, 0xc000722550}, 0x0)
github.com/pingcap/tidb/dumpling/export/writer.go:243 +0x225
github.com/pingcap/tidb/dumpling/export.(*Writer).WriteTableData.func1()
github.com/pingcap/tidb/dumpling/export/writer.go:228 +0x899
github.com/pingcap/tidb/br/pkg/utils.WithRetry.func1({0x2260188?, 0x40f92b?})
github.com/pingcap/tidb/br/pkg/utils/retry.go:45 +0x13
github.com/pingcap/tidb/br/pkg/utils.WithRetryV2[...]({0x2b36c38?, 0xc000eb1a28}, {0x7f4f1440a6e8, 0xc00118c000}, 0xc00031fce0)
github.com/pingcap/tidb/br/pkg/utils/retry.go:63 +0x98
github.com/pingcap/tidb/br/pkg/utils.WithRetry({0x2b36c38?, 0xc000eb1a28?}, 0x0?, {0x7f4f1440a6e8?, 0xc00118c000?})
github.com/pingcap/tidb/br/pkg/utils/retry.go:44 +0x4a
github.com/pingcap/tidb/dumpling/export.(*Writer).WriteTableData(0xc000d618c0, {0x2b4caf8, 0xc000ca4280}, {0x2b36c70, 0xc000722550}, 0x0)
github.com/pingcap/tidb/dumpling/export/writer.go:192 +0x21e
github.com/pingcap/tidb/dumpling/export.(*Writer).handleTask(0xc000d618c0, {0x2b13740, 0xc000eae200})
github.com/pingcap/tidb/dumpling/export/writer.go:115 +0xca
github.com/pingcap/tidb/dumpling/export.(*Writer).run(0xc000d618c0, 0xc0008a4a80)
github.com/pingcap/tidb/dumpling/export/writer.go:93 +0x105
github.com/pingcap/tidb/dumpling/export.(*Dumper).startWriters.func4()
github.com/pingcap/tidb/dumpling/export/dump.go:377 +0x1b
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/sync@v0.8.0/errgroup/errgroup.go:78 +0x50
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1
golang.org/x/sync@v0.8.0/errgroup/errgroup.go:75 +0x96
```

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

Release Version: v8.5.1
Edition: Community
Git Commit Hash: fea86c8e35ad4a86a5e1160701f99493c2ee547c
Git Branch: HEAD
UTC Build Time: 2025-01-16 07:38:34
GoVersion: go1.23.4
Race Enabled: false
Check Table Before Drop: false
Store: tikv

$ tiup dumpling --version
Release version: v8.5.1
Git commit hash: fea86c8e35ad4a86a5e1160701f99493c2ee547c
Git branch: HEAD
Build timestamp: 2025-01-16 07:38:34Z
Go version: go version go1.23.4 linux/amd64

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.