tidb: Slice bounds out of range error caused by using duplicate key
Bug Report
1. Minimal reproduce step (Required)
When I was executing this sql statement, this error appeared, but it was normal in mysql. And, when I removed on duplicate key update, the remaining SQL statements can also be executed normally.
-
in tidb v5.1.0
-
in tidb v5.1.0 without duplicate key update
-
in mysql 5.7.14
2. What did you expect to see? (Required)
I expect to see the same result as mysql 5.7
3. What did you see instead (Required)
ERROR 1105 (HY000): runtime error: slice bounds out of range [26:25]
4. What is your TiDB version? (Required)
- tidb version
v5.1.0
- mysql version
5.Others
- Table building statement
CREATE TABLE `cips_chck_detl` (
`subsys` char(4) NOT NULL,
`bankcd` varchar(14) NOT NULL,
`chckdt` varchar(8) NOT NULL,
`iotype` char(1) DEFAULT NULL,
`mesgtp` varchar(20) NOT NULL,
`sendog` varchar(20) DEFAULT NULL,
`crdbtg` char(4) DEFAULT NULL,
`cipsam` decimal(18,2) DEFAULT NULL,
`cipsnm` int(11) DEFAULT NULL,
`blncdt` varchar(8) DEFAULT NULL,
`blncbt` varchar(8) DEFAULT NULL,
`cipsst` char(4) DEFAULT NULL,
`fcbpdt` varchar(8) DEFAULT NULL,
`fcbpsq` varchar(20) DEFAULT NULL,
`tranam` decimal(18,2) DEFAULT NULL,
`trannm` int(11) DEFAULT NULL,
`procst` char(4) DEFAULT NULL,
`chckst` char(1) DEFAULT NULL,
`brchno` varchar(20) DEFAULT NULL,
`mssgid` varchar(35) DEFAULT NULL,
`mybldt` varchar(8) DEFAULT NULL,
`dnbztg` char(4) DEFAULT NULL,
`adjtbk` varchar(20) DEFAULT NULL,
`oprttp` varchar(10) DEFAULT NULL,
`chcktp` char(1) DEFAULT NULL,
`chcksc` char(1) DEFAULT NULL,
KEY `idx_cnap_chck_detl_chckdt` (`chckdt`),
KEY `idx_cips_chck_detl_all` (`chckdt`,`subsys`,`chckst`,`mesgtp`,`sendog`),
KEY `idx_cnap_chck_detl_mssgid` (`mssgid`,`chckdt`,`dnbztg`,`iotype`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='table1';
CREATE TABLE `cips_m111` (
`fcbpdt` char(8) NOT NULL,
`fcbpsq` varchar(20) NOT NULL,
`chnlsq` varchar(30) DEFAULT NULL,
`iotype` char(1) NOT NULL,
`mesgtp` varchar(35) DEFAULT NULL,
`procst` char(4) DEFAULT NULL,
`cipstx` varchar(105) DEFAULT NULL,
`cipsst` char(4) DEFAULT NULL,
`looktg` char(1) DEFAULT NULL,
`lookrm` varchar(120) DEFAULT NULL,
`repttg` char(1) DEFAULT NULL,
`transt` char(1) DEFAULT NULL,
`sendcl` varchar(35) DEFAULT NULL,
`mssgid` varchar(35) DEFAULT NULL,
`mesgtm` varchar(19) DEFAULT NULL,
`etebid` varchar(35) DEFAULT NULL,
`busils` varchar(35) DEFAULT NULL,
`crcycd` varchar(3) DEFAULT NULL,
`tranam` decimal(18,2) DEFAULT NULL,
`intbdt` char(8) DEFAULT NULL,
`mesglv` varchar(4) DEFAULT NULL,
`setltm` varchar(19) DEFAULT NULL,
`ocrycd` varchar(3) DEFAULT NULL,
`otraam` decimal(18,2) DEFAULT NULL,
`exchra` decimal(21,10) DEFAULT NULL,
`mgfetp` varchar(4) DEFAULT NULL,
`freetg` char(1) DEFAULT NULL,
`pyercl` varchar(35) DEFAULT NULL,
`pyercd` varchar(35) DEFAULT NULL,
`pyeecl` varchar(35) DEFAULT NULL,
`pyeecd` varchar(35) DEFAULT NULL,
`agenog` varchar(35) DEFAULT NULL,
`agenna` varchar(140) DEFAULT NULL,
`agseog` varchar(35) DEFAULT NULL,
`agsena` varchar(140) DEFAULT NULL,
`pyerna` varchar(140) DEFAULT NULL,
`pyerad` varchar(497) DEFAULT NULL,
`pyerog` varchar(35) DEFAULT NULL,
`prcrno` varchar(35) DEFAULT NULL,
`prcrtp` varchar(2) DEFAULT NULL,
`pradcd` varchar(2) DEFAULT NULL,
`pyerac` varchar(34) DEFAULT NULL,
`pyerbk` varchar(35) DEFAULT NULL,
`prbkna` varchar(140) DEFAULT NULL,
`prbkad` varchar(497) DEFAULT NULL,
`prbkac` varchar(34) DEFAULT NULL,
`pyeebk` varchar(35) DEFAULT NULL,
`pebkna` varchar(140) DEFAULT NULL,
`pebkad` varchar(497) DEFAULT NULL,
`pebkac` varchar(34) DEFAULT NULL,
`pyeena` varchar(140) DEFAULT NULL,
`pyeead` varchar(497) DEFAULT NULL,
`pyeeog` varchar(35) DEFAULT NULL,
`pecrno` varchar(35) DEFAULT NULL,
`pecrtp` varchar(2) DEFAULT NULL,
`peadcd` varchar(2) DEFAULT NULL,
`pyeeac` varchar(34) DEFAULT NULL,
`progcd` varchar(35) DEFAULT NULL,
`prognc` varchar(140) DEFAULT NULL,
`peogcd` varchar(35) DEFAULT NULL,
`peognc` varchar(140) DEFAULT NULL,
`pyeemk` text DEFAULT NULL,
`oderno` varchar(35) DEFAULT NULL,
`oderna` text DEFAULT NULL ,
`remark` text DEFAULT NULL ,
`retnmk` varchar(140) DEFAULT NULL ,
`setldt` char(8) DEFAULT NULL ,
`pereid` varchar(60) DEFAULT NULL,
`peeeid` varchar(60) DEFAULT NULL,
`dyngtg` varchar(4) DEFAULT NULL,
`asgnst` char(1) NOT NULL,
`systno` varchar(20) DEFAULT NULL,
`brchno` varchar(12) DEFAULT NULL,
`userid` varchar(12) DEFAULT NULL,
`ckbkus` varchar(12) DEFAULT NULL,
`authus` varchar(12) DEFAULT NULL,
`zztrtm` varchar(20) DEFAULT NULL,
`rejetx` varchar(300) DEFAULT NULL,
`trantg` char(1) DEFAULT NULL,
`authst` char(1) DEFAULT NULL,
`rqsyid` varchar(10) DEFAULT NULL,
`zzcltm` varchar(20) DEFAULT NULL,
`dcmtnm` int(11) DEFAULT NULL,
`afeetg` char(1) DEFAULT NULL,
`afeeam` decimal(18,2) DEFAULT NULL,
`afeecd` varchar(20) DEFAULT NULL,
`afeeac` varchar(32) DEFAULT NULL,
`afeena` varchar(180) DEFAULT NULL,
`dcmttp` varchar(4) DEFAULT NULL,
`dcmtno` varchar(32) DEFAULT NULL,
`modfac` varchar(32) DEFAULT NULL,
`modfna` varchar(180) DEFAULT NULL,
`blncdt` varchar(8) DEFAULT NULL,
`blncbt` varchar(4) DEFAULT NULL,
`ckprst` char(1) DEFAULT NULL,
`opertp` char(1) DEFAULT NULL,
`actndc` varchar(128) DEFAULT NULL ,
`pyerar` varchar(4) DEFAULT NULL ,
`pyeear` varchar(4) DEFAULT NULL ,
`pyerat` char(1) DEFAULT NULL ,
`pyeeat` char(1) DEFAULT NULL ,
`blanmd` varchar(2) DEFAULT NULL ,
`ifrefd` char(1) DEFAULT NULL ,
`oinlno` varchar(24) DEFAULT NULL ,
`balopc` varchar(6) DEFAULT NULL ,
`bustyc` varchar(6) DEFAULT NULL ,
`bustyl` varchar(8) DEFAULT NULL ,
`iprpym` char(1) DEFAULT NULL ,
`prpysc` decimal(4,2) DEFAULT NULL ,
`acperd` int(11) DEFAULT NULL ,
`custst` varchar(4) DEFAULT NULL ,
`cerfno` varchar(32) DEFAULT NULL ,
`contno` varchar(24) DEFAULT NULL ,
`tranrl` varchar(2) DEFAULT NULL ,
`trantp` varchar(2) DEFAULT NULL ,
`peebic` varchar(11) DEFAULT NULL ,
`tranpp` varchar(6) DEFAULT NULL ,
`trbstp` varchar(4) DEFAULT NULL ,
PRIMARY KEY (`fcbpdt`,`fcbpsq`) /*T![clustered_index] NONCLUSTERED */,
KEY `idx_cips_m111_2` (`fcbpdt`,`sendcl`,`mssgid`),
KEY `pk_cips_m111_3` (`chnlsq`),
KEY `pk_cips_m111_4` (`pyerac`,`pyerna`,`tranam`,`pyeeac`,`pyeebk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='流水表';
- SQL statement executed
insert into cips_chck_detl
( subsys, bankcd, chckdt, iotype, mesgtp, sendog, crdbtg, cipsam, cipsnm, blncdt, blncbt, cipsst, fcbpdt, fcbpsq, tranam, trannm, procst, chckst, brchno, mssgid, mybldt, dnbztg, chcktp, chcksc)
select 'CIPS', 'ADBNCNBJXXX', '20210827', d.iotype, d.mesgtp, d.sendcl, null, 0, 0, null,null, null, d.fcbpdt, d.fcbpsq, d.tranam, 1 as trannm, case iotype when '0' then procst else cipsst end as procst,
'0', d.brchno, d.mssgid, d.blncdt, d.dyngtg, 'T', '1'
from
cips_m111 d
where d.blncdt = '20210827' and 'ADBNCNBJXXX' in (d.pyercl,d.pyeecl) and d.dyngtg= 'DAYT' and d.mesgtp = 'cips.111.001.02' and iotype = case when ' CRDT' = 'DBIT' then '0' else '1' end
and procst not in ('CH**','CH*0','CH00','CH05','CH08','CH13','CH18','CH19')
on duplicate key
update
fcbpdt = d.fcbpdt, fcbpsq = d.fcbpsq, tranam = d.tranam, trannm = 1, procst = d.procst, mybldt = d.blncdt, brchno = d.brchno, chckst = '0';
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 15 (6 by maintainers)
Commits related to this issue
- executor: Fix a panic when using on duplicate update (#31287) close pingcap/tidb#28078 — committed to pingcap/tidb by MyonKeminta 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) (#31345) close pingcap/tidb#28078 — committed to pingcap/tidb by ti-srebot 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) close pingcap/tidb#28078 — committed to MyonKeminta/tidb by MyonKeminta 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) (#31458) close pingcap/tidb#28078 — committed to pingcap/tidb by MyonKeminta 2 years ago
- Squashed commit of the following: commit 60f0948fb49985e71702c41d3b5cb6dede4abc58 Author: Weizhen Wang <wangweizhen@pingcap.com> Date: Sun Jan 23 17:27:46 2022 +0800 session: fix data race in ... — committed to wangggong/tidb by wangggong 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) (#31342) close pingcap/tidb#28078 — committed to pingcap/tidb by ti-srebot 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) (#31344) close pingcap/tidb#28078 — committed to pingcap/tidb by ti-srebot 2 years ago
- executor: Fix a panic when using on duplicate update (#31287) (#31343) close pingcap/tidb#28078 — committed to pingcap/tidb by ti-srebot 2 years ago
@aytrack We’d better upgrade the severity of the problem to critical, because it’s troublesome to bypass the problem, and it’s best to cherry pick all branches.