pingcap / tidb

TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://www.pingcap.com/tidb-serverless/
https://pingcap.com
Apache License 2.0
36.94k stars 5.81k forks source link

query panic during decodeRestoredValuesV5 #51198

Open wjhuang2016 opened 7 months ago

wjhuang2016 commented 7 months ago

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

CREATE TABLE `t6aa5c01d` (
  `col_6` varchar(159) COLLATE utf8mb4_general_ci NOT NULL,
  `col_7` json DEFAULT NULL,
  `col_8` char(180) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `col_9` blob DEFAULT NULL,
  `col_10` datetime NOT NULL,
  `col_11` float DEFAULT '1996.0842',
  `col_12` date NOT NULL,
  `col_13` smallint(6) NOT NULL,
  KEY `idx_7` (`col_10`,`col_6`(2),`col_9`(5)),
  UNIQUE KEY `idx_8` (`col_13`,`col_6`),
  UNIQUE KEY `idx_9` (`col_13`,`col_12`),
  PRIMARY KEY (`col_13`,`col_6`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
PARTITION BY RANGE (`col_13`)
(PARTITION `p0` VALUES LESS THAN (-32767),
 PARTITION `p1` VALUES LESS THAN (-6581),
 PARTITION `p2` VALUES LESS THAN (-1879),
 PARTITION `p3` VALUES LESS THAN (12771),
 PARTITION `p4` VALUES LESS THAN (23803));

INSERT INTO `t6aa5c01d` VALUES ('圵9_L0$','[\"qlaURp2sTQmDl7Ii8u78GU4QVLkYNIZKMK4uIYBjG6rvWmEP0uCmWMJEDJD8JEPm\", \"hdzSHYH3PRW7cRnA9RfqA8BLPxnSPpMYfPkcGxx0BYoQ9NaolKmgAvBcmEjkocwu\", \"yf9jLOoICfewNY9vnNvcFevCs01DSJpBBmtXscJcqdk3F5zgPqQtfvrwK7EQvmS9\", \"oc6VpVQC0PBpud0FBICMWPO9gvaECvLV1GO9dyLqa4W7Zv4GQB850Q7Xa3tEXwMN\", \"SPrvcBaWidznMHaS9813KJdDknFJE3lQnIcHx1yXmWqHg5kgpZyqyIhNtTDn8KFt\"]','qQ^',x'6a554a6d','2030-01-07 00:00:00',1822.106,'2017-10-06',-32768), ('穇c黓_','[\"KnciIiiQCXSLBvsuc6Ts2a8kBq19PdrZBQzvegLdZhfA4vkiRL2qDTfvhFq0NuHe\", \"FkUMveV3FDNUX8deCSI83j0hUjtkyHsoYONKmbsLqA2JfdDrneEQEm4NGekW5X2q\", \"XyANIQ2WLIzKJmHC9EDxh7aUf2cjmerr4LazfQ8tWJWrNqeNoLuBdfeUOvNn4j9t\"]','84%',x'47672b777a41314e5345757144625a4b5e38','1993-10-06 00:00:00',5634.748,'1989-11-29',-29665), ('PVbx','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','eSCZ',x'244443264a322b733023586737712b7a71','2025-03-25 00:00:00',5757.157,'2030-06-02',-25740), ('MA辴勃0t陈@c%嵻媠&竿','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','',x'28554f23','2023-01-12 00:00:00',5757.157,'2015-08-29',-23707), ('C=鄣rr6牣姅&G礂e鋑Is纅跻咚','[\"vJ9bFqX9PKSrYlkIfY7A63FAuw9EkCxVCRYWkGyZ0WOa2H3PNk51SV8q6pakXS2v\"]','eE!',x'6147766326477a4a294b3463322a404b4226','2000-12-16 00:00:00',1015.9543,'2010-01-31',-21525), ('洜~奺父OU擐H溫N%嶝k','[\"lcukTt707tWwCVp687xHELTtdp7jZoryHLy0zUQejsFqjRbEVvueAmSeRvhVCw0l\", \"Jo7iPMFBCrelNqNkTKaW6sEfoVTNodhdniZRdG9b7Z8953REJJdHh43vci178zdf\"]','b',x'565a5726712d55776b436d623945667e','1981-10-28 00:00:00',5126.893,'2035-05-26',-15519), ('','[\"4WrDbIbwHoIf5odikZh4LdUL5Yx69jNIB1aF6FiZb4Q7H9FywfzmeLL4loTrkwIr\", \"P5Gnmn85FEAJmhGMd5R3auwQ7g5QdwspFhNl6eUOXMpIvG1Fx3u7K2zTRbgsBKws\", \"ApZzVE6yH9ZRPj88Tj1P2ftSeZ1wVBeORJAPejSzl6mKjVYOgkJ4asGo6sIqqLsq\", \"OOslBwbUVrK4tKSpy3Kj73eKJwgTXE7ocWT8Ck4CmmDomzNHgzkJWrADxJixVn6N\"]','c=kZ',x'59386d3d69585a2377676b51','2027-02-10 00:00:00',9387.455,'1981-08-15',-14216), ('I鯎锯蹪nD','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','~mFdGggJvjrZ',x'7763546e465a6370324f','1996-11-30 00:00:00',5757.157,'1989-08-26',-9887), ('墵Y泫蒺QgNzx#攦Ix','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','~mFdGggJvjrZ',x'7763546e465a6370324f','1996-11-30 00:00:00',5757.157,'2033-10-11',-9887), ('底榥_g','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','~mFdGggJvjrZ',x'7763546e465a6370324f','1996-11-30 00:00:00',5757.157,'1997-09-23',-9887), ('b','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','um2GzeoRgUQPiaIs',x'2a','2017-11-18 00:00:00',5757.157,'2010-09-18',-6834), ('8h殿n勺Y39煬z(煪n+FS6','[\"R9nVDIV7cvMPgGTxrSjfakeZbLFcd8kZN5FEJhmFS4ZupFHbFLQC5lNiYApLX3MQ\", \"7oNUXS7TqyA9W9QqkQ5MnkU96uk9fGxsrcR6p5NcFaTveCYMf1AOQRMXFF9tiTem\"]',')M@IyqZf',x'4e6f2356616a2d4155','2014-11-18 00:00:00',146.2741,'1997-02-23',-6520), ('炫g%摙R趫綿6Fun0cKM4','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','gtaAGTg',x'495931','1980-04-06 00:00:00',5757.157,'2035-05-27',-2422), ('8m=7澇5B薃響','[\"xs0V9mQopzrixnmN0i4zai3c9emkcAzC8L7bepjFyKhpKWY1q9f7e0GVI1HL3Z6N\", \"Zib7gNojdC48FvoC9nnnaW4lHUhaiduVosPM2WsCwfZO5F6ap7sxl0O466OYEDJV\", \"68zQtRAweYN3g77BdWW9iHyawoWG3FUqoMiBmcYk46YWbpb87ZsxZGVXpNuvXtID\", \"CgmQe6EV8wB1bhkpUbxwZaUodlJ830eYnmjXuKLeb23fYkwNiSPW6xu4wP063KM0\", \"TWyLrJ8vgTq5q4h8kh8SBLqPTHXAoNPTO5tUxmq1THVnqtYbQyfHgZoj6ENEoEG6\"]','A+',x'6d4b72','1985-06-05 00:00:00',5874.645,'2008-06-25',-1498), ('mU+齩rgk瑪饝l諲D銓闧','[\"264RiS4Ww8fF0zJFQJR9owCbKVERAFxxxD4O82Lp0dc0KdF38RAu1GKTY8phFFZB\", \"LnnqGR0Gtr0s9CIs8uJjzfgDHvpifXcjYeEAJpYd6H1EzHXZbfn5OgGTe523ViVM\", \"1XPvEnX6t15dJzwy2Pj0JW4mTrjOF7qr3cxHxxqpKAuVDVm4FzGJHI7VA7plJTFL\", \"rO694R7IZ0AVSezzVDx7WNvB3BuRnqNNqcJ3OiedXvp6hgIdj54kW4Mv1WzvoZmZ\"]','s(IPx31m1Y+Mj$',x'4126357133304b69634d6435557a44','1998-08-30 00:00:00',9105.416,'1992-12-24',2), ('O~嬽En','[\"lU3attfGfVUQDuW4A6Xb3ODCq5nf71x7w4XjXUQpRNNn4XG6OMlnLjWfaarCRghx\", \"UVYctHonFOjC6ORLgy95hfcoUXwuu9DhSNQaDuUSbN9PdJJU3Fteh6rwDeKzrTcG\", \"cKofMA6Kp9Y1TEev44lyxB3NdYyJ521Hje3CJikElDVi6NZWHbqGBQyWgeqHTldw\", \"5VIXRbtOojmw9AEMUyWpM9BA4cZkSSqDTbYSCNqVE4rjQ7Ckjs81gzEp19PY6v8y\"]','zY_+OV9d1',x'','1992-10-10 00:00:00',506.54547,'1988-12-07',16289), ('汏w郇D','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','3kYE^H!&DZVMiaQ',x'25','1997-12-18 00:00:00',5757.157,'1980-11-19',17443), ('C赉g莩~鿒噡Fl','[\"8Yz2Nr4ieug5UHywxeLw6Eh9sIDm04ecPEflVnuLCJPVg7ER3ZHyBFHBooWOPyQg\", \"uQhJztLInP3rSdEtBFJfdnQ6nGv8FANVlo9UPe4IkqlbSdZT27OEk6ADAfhoq5Mn\", \"7HsM4J78NCFffQilTOWx4UoKnPPr3yA86GGSvZxoPIL4JxcHMsaCd9kAANTcKZFO\"]','S2I!NZ9*eQvPJ&N9vY',x'70','1970-09-05 00:00:00',5757.157,'2005-07-17',22409);

select     /*+ nth_plan(5) */ 1 from t6aa5c01d where t6aa5c01d.col_11 in ( 3715.4259825931067 ,2582.1531722078457 ,1188.6757702839714 ) group by t6aa5c01d.col_10  having t6aa5c01d.col_10 between '1974-12-17' and '2011-06-08' or t6aa5c01d.col_10 between '1988-03-11' and '1996-10-09';

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

No panic

3. What did you see instead (Required)

 [INFO] [conn.go:1155] ["command dispatched failed"] [conn=2097194] [session_alias=] [connInfo="id:2097194, addr:127.0.0.1:60566 status:10, collation:utf8mb4_0900_ai_ci, user:root"] [command=Query] [status="inTxn:0, autocommit:1"] [sql="select     /*+ nth_plan(5) */ 1 from t6aa5c01d where t6aa5c01d.col_11 in ( 3715.4259825931067 ,2582.1531722078457 ,1188.6757702839714 ) group by t6aa5c01d.col_10  having t6aa5c01d.col_10 between '1974-12-17' and '2011-06-08' or t6aa5c01d.col_10 between '1988-03-11' and '1996-10-09'"] [txn_mode=PESSIMISTIC] [timestamp=447852373406646272] [err="runtime error: index out of range [2] with length 2\ngithub.com/pingcap/errors.AddStack\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20231212100244-799fae176cfb/errors.go:174\ngithub.com/pingcap/errors.Trace\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20231212100244-799fae176cfb/juju_adaptor.go:15\ngithub.com/pingcap/tidb/pkg/util.GetRecoverError\n\t/Users/bba/pc/tidb/pkg/util/util.go:305\ngithub.com/pingcap/tidb/pkg/store/copr.(*copIteratorWorker).handleTask.func1\n\t/Users/bba/pc/tidb/pkg/store/copr/coprocessor.go:1125\nruntime.gopanic\n\t/Users/bba/.gvm/gos/go1.21.0/src/runtime/panic.go:914\nruntime.goPanicIndex\n\t/Users/bba/.gvm/gos/go1.21.0/src/runtime/panic.go:114\ngithub.com/pingcap/tidb/pkg/tablecodec.decodeRestoredValuesV5\n\t/Users/bba/pc/tidb/pkg/tablecodec/tablecodec.go:839\ngithub.com/pingcap/tidb/pkg/tablecodec.reEncodeHandleConsiderNewCollation\n\t/Users/bba/pc/tidb/pkg/tablecodec/tablecodec.go:806\ngithub.com/pingcap/tidb/pkg/tablecodec.decodeIndexKvForClusteredIndexVersion1\n\t/Users/bba/pc/tidb/pkg/tablecodec/tablecodec.go:1789\ngithub.com/pingcap/tidb/pkg/tablecodec.DecodeIndexKV\n\t/Users/bba/pc/tidb/pkg/tablecodec/tablecodec.go:947\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.(*indexScanExec).Process\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/mpp_exec.go:296\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/dbreader.(*DBReader).Scan\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/tikv/dbreader/db_reader.go:240\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.(*indexScanExec).open\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/mpp_exec.go:346\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.mppExecute\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/cop_handler.go:200\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.buildAndRunMPPExecutor\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/cop_handler.go:191\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.handleCopDAGRequest\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/cop_handler.go:146\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.HandleCopRequestWithMPPCtx\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/cop_handler.go:73\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/cophandler.HandleCopRequest\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/cophandler/cop_handler.go:61\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv.(*Server).Coprocessor\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/tikv/server.go:580\ngithub.com/pingcap/tidb/pkg/store/mockstore/unistore.(*RPCClient).SendRequest\n\t/Users/bba/pc/tidb/pkg/store/mockstore/unistore/rpc.go:256\ngithub.com/pingcap/tidb/pkg/store/mockstore.(*clientRedirector).SendRequest\n\t/Users/bba/pc/tidb/pkg/store/mockstore/redirector.go:72\ngithub.com/tikv/client-go/v2/tikv.(*CodecClient).SendRequest\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240205071126-11cb7985f0ec/tikv/test_util.go:60\ngithub.com/tikv/client-go/v2/internal/client.interceptedClient.SendRequest.func1\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240205071126-11cb7985f0ec/internal/client/client_interceptor.go:57\ngithub.com/pingcap/tidb/pkg/util/topsql/stmtstats.(*KvExecCounter).RPCInterceptor.func1.1\n\t/Users/bba/pc/tidb/pkg/util/topsql/stmtstats/kv_exec_count.go:57\ngithub.com/tikv/client-go/v2/internal/client.buildResourceControlInterceptor.func1.1\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240205071126-11cb7985f0ec/internal/client/client_interceptor.go:124\ngithub.com/tikv/client-go/v2/internal/client.interceptedClient.SendRequest\n\t/Users/bba/.gvm/pkgsets/go1.21.0/global/pkg/mod/github.com/tikv/client-go/v2@v2.0.8-0.20240205071126-11cb7985f0ec/internal/c

4. What is your TiDB version? (Required)

1fc92b32b05e3f2f04b9d321a9e224b9125a4a82

windtalker commented 7 months ago

Hi @wjhuang2016 I can not reproduce this bug in latest nightly version( 134d2bfbe0002b24177155873038188d4544e538), can you provide more information about this bug? For example, the query plan when for the panic execution?

wjhuang2016 commented 7 months ago

@windtalker

Try it:

analyze table t6aa5c01d;
windtalker commented 7 months ago

I can reproduce it after analyze, thanks.

windtalker commented 7 months ago

It should be a bug in encoding, the index idx_7 contains 3 columns(col_10, col_6, col_9), but looks like if length(col_9) == 0, the decode result of the key contains only two column, which makes the error of index out of bound. I can't reproduce it in TiDB + TiKV cluster, so it seems a bug only in unistore.