报错内容: 1105 - other error: [components/tidb_query/src/batch/runner.rs:83]: BatchSelectionExecutor: Evaluate error: [components/tidb_query/src/rpn_expr/mod.rs:526]: ScalarFunction Substring3ArgsUtf8 is not supported in batch mode
版本:5.7.25-TiDB-v4.0.0-rc
建表语句:
CREATE TABLE `test1` (
`c_no` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL ,
PRIMARY KEY (`c_no`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `test2` (
`c_no` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
执行语句:
select max(substr(c_no,1,10)) from test1;
select max(substr(c_no,1,10)) from test2;
同样的语句,在表1会报错,提示ScalarFunction Substring3ArgsUtf8 is not supported in batch mode。在表2不会报错。两个表的差异就是字段是否为主键。