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/
Index out of range [1] with length 1 when using AES_DECRYPT
1. Minimal reproduce step (Required)
create table test (name1 varchar(64),name2 varchar(64));
insert into test values('99FAFD8059A44BC14BCCC70154AC00F3','99FAFD8059A44BC14BCCC70154AC00F3');
SELECT * FROM test WHERE CAST(AES_DECRYPT(UNHEX(name1), 'r��Lu-t�AS�h)%R`') AS CHAR) = '00' AND CAST(AES_DECRYPT(UNHEX(name2), 'r��`') AS CHAR) = '1';
2. What did you expect to see? (Required)
No error
3. What did you see instead (Required)
ERROR 1105 (HY000): runtime error: index out of range [1] with length 1
github.com/pingcap/tidb/executor.(*recordSet).Next.func1
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/executor/adapter.go:149
runtime.gopanic
\t/usr/local/go/src/runtime/panic.go:884
runtime.goPanicIndex
\t/usr/local/go/src/runtime/panic.go:113
github.com/pingcap/tidb/util/chunk.(*Column).GetBytes
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/util/chunk/column.go:588
github.com/pingcap/tidb/expression.(*builtinAesDecryptSig).vecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/builtin_encryption_vec.go:73
github.com/pingcap/tidb/expression.(*ScalarFunction).VecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/scalar_function.go:58
github.com/pingcap/tidb/expression.(*builtinInternalFromBinarySig).vecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/builtin_convert_charset.go:198
github.com/pingcap/tidb/expression.(*ScalarFunction).VecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/scalar_function.go:58
github.com/pingcap/tidb/expression.(*builtinCastStringAsStringSig).vecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/builtin_cast_vec.go:1895
github.com/pingcap/tidb/expression.(*ScalarFunction).VecEvalString
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/scalar_function.go:58
github.com/pingcap/tidb/expression.(*builtinEQStringSig).vecEvalInt
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/builtin_compare_vec_generated.go:1003
github.com/pingcap/tidb/expression.(*ScalarFunction).VecEvalInt
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/scalar_function.go:48
github.com/pingcap/tidb/expression.(*builtinLogicOrSig).vecEvalInt
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/builtin_op_vec.go:77
github.com/pingcap/tidb/expression.(*ScalarFunction).VecEvalInt
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/scalar_function.go:48
github.com/pingcap/tidb/expression.EvalExpr
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/expression.go:574
github.com/pingcap/tidb/expression.VecEvalBool
\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/expression/expression.go:369
The first EQ expr filter all rows(Sel in Chunk is not nil, but length is zero, check here), but builtinAesDecrypt in the second EQ expr assume the result of its child result is not empty, and try to get the first byte of its child result(check here). So we got this panic.
Bug Report
Index out of range [1] with length 1 when using AES_DECRYPT
1. Minimal reproduce step (Required)
2. What did you expect to see? (Required)
No error
3. What did you see instead (Required)
4. What is your TiDB version? (Required)
master