You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TDengine算术查询使用非数字操作数触发coredump问题咨询

非数值操作数参与算术运算的标准处理说明

  • 无论是SQL标准还是主流数据库的实现逻辑,都不允许算术运算场景下直接触发进程崩溃的情况,你遇到的coredump属于TDengine的代码缺陷,不属于合理的标准处理方式。
  • 常规的兼容处理逻辑通常为以下两种:
    • 抛出明确的类型错误提示:比如PostgreSQL遇到字符串和数字做加法会直接返回类型不匹配的明确报错,不会终止客户端或服务端进程
    • 兼容隐式转换逻辑:比如MySQL会尝试将字符串转为数值类型参与运算,无法转换的字符串默认按0计算,全程不会出现崩溃

本次coredump原因说明

这是TDengine客户端SQL解析模块的边界处理遗漏,从报错栈可以看出在functionCompatibleCheck函数中校验运算表达式合法性时,没有覆盖操作数全为非数值类型的分支,触发了开发阶段的断言校验,直接终止了客户端进程,该问题属于可修复的代码缺陷,而非预期设计行为。

问题复现示例

-- 数值运算正常执行
taos> select 2 + 3.0 from tb;
          2 + 3.0          |
============================
               5.000000000 |
               5.000000000 |
Query OK, 2 row(s) in set (0.014870s)

-- 字符串相加触发coredump
taos> select 'a' + 'b' from tb;
taos: /root/wz_test/TDengine/src/client/src/tscSQLParser.c:3506: functionCompatibleCheck: Assertion `numOfExpr > 0' failed.
Aborted (core dumped)

-- 字符串减数字触发coredump
taos> select "a" - 1 from db.tb;
taos: /root/wz_test/TDengine/src/client/src/tscSQLParser.c:3506: functionCompatibleCheck: Assertion `numOfExpr > 0' failed.
Aborted (core dumped)

内容的提问来源于stack exchange,提问作者GeorgeWill93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:27:00