matrixorigin / matrixorigin/matrixone
[Bug]: ADDTIME and SUBTIME panic on fractional composite TIME strings
- Dominant language
- Go
- Stars
- 1.9k
- Forks
- 311
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 768
Description
## 现象
在 MatrixOne main `99ed717b769e261b842c2f17345bd65865fc1470`,`ADDTIME/SUBTIME` 处理带 fractional seconds 的复合 `TIME` 字符串会触发服务端 panic:
```sql
SELECT ADDTIME('1 12:34:56.123456', '01:02:03.500000');
SELECT SUBTIME('1 12:34:56.123456', '01:02:03.500000');
```
两条语句都返回内部错误,堆栈指向 `types.ParseDatetime` 的 `slice bounds out of range`,分别经过 `addTimeToString` / `subTimeFromString`。
不带 fractional seconds 的同类字符串不会 panic,但会被错误解释成当前日期的 `DATETIME`,见 #28147。
## 期望
非法或超范围输入应返回标准 SQL 结果/错误,不应触发进程级 panic;合法的复合 `TIME` 字符串应按时间间隔计算并保留小数精度。
## 影响
单条用户查询即可触发内部错误,破坏连接稳定性,并可能导致 CN 重启或请求失败。
## 复现信息
- MatrixOne main: `99ed717b769e261b842c2f17345bd65865fc1470`
- 每条语句重复执行 3 次,结果一致
Contributor guide
Assessment
This issue has not been assessed yet.