matrixorigin / matrixorigin/matrixone

[Bug]: ADDTIME and SUBTIME panic on fractional composite TIME strings

Open
#28,151 0 comments 0 reactions 1 assignee Claimed by @jiangxinmeng1 View on GitHub
kind/bug needs-triage
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.