Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 Bug 的影响】
查询报错
【可能的问题复现步骤】
5.1之前是正常的,升级后查询报错(status前有空格).
SELECT
*
from
test_table t
where t. status=1
【看到的非预期行为】
报错
【期望看到的行为】
正常
【相关组件及具体版本】
v5.1
【其他背景信息或者截图】
Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 Bug 的影响】
查询报错
【可能的问题复现步骤】
5.1之前是正常的,升级后查询报错(status前有空格).
SELECT
*
from
test_table t
where t. status=1
【看到的非预期行为】
报错
【期望看到的行为】
正常
【相关组件及具体版本】
v5.1
【其他背景信息或者截图】
t. status 为啥 要加个空格?
刚试了一下,中间有空格竟然能执行成功~
我这边是 5.7.25-TiDB-v5.1.0 ,使用DBeaver工具执行语句,status 为varchar字段。 执行未报错,能提供进一步的可复现语句么?比如建表语句,测试记录,测试语句等~
好吧,没这么操作过,一般都自动格式化了~~ 不折腾这些…
你的版本是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