sql查询报错

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 Bug 的影响】
查询报错
【可能的问题复现步骤】
5.1之前是正常的,升级后查询报错(status前有空格).

SELECT
*
from
test_table t
where t. status=1

【看到的非预期行为】
报错
【期望看到的行为】
正常
【相关组件及具体版本】
v5.1
【其他背景信息或者截图】

1赞

t. status 为啥 要加个空格?

刚试了一下,中间有空格竟然能执行成功~

我这边是 5.7.25-TiDB-v5.1.0 ,使用DBeaver工具执行语句,status 为varchar字段。 执行未报错,能提供进一步的可复现语句么?比如建表语句,测试记录,测试语句等~:handshake:

好吧,没这么操作过,一般都自动格式化了~~ 不折腾这些…

你的版本是5.1么,我们升级前不报错的,升完级开始报错,这个也不是特意加的空格,就是代码里面格式化出来的

CREATE TABLE test_table (
aa varchar(255) NOT NULL,
bb varchar(255) DEFAULT NULL,
status tinyint(3) DEFAULT NULL,
PRIMARY KEY (aa)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

确实报错了,应该是类型转换问题

但是这种的不应该被认为是bug。还是建议在程序代码上进行规范。

SELECT
*
from
test_table t
where t. status=1;

SELECT
*
from
test_table t
where t. aa=1;

这两种查询都不会报错 ,估计 status是关键字的原因

status加引号也不会报错

是的,还是建议提交到开发端,要求规范程序代码。

另:分享一下官方的开发规范
https://docs.pingcap.com/zh/dev-guide/dev/basic-principles