matrixorigin / matrixorigin/matrixone

[Compatibility]: DATE_ADD and DATE_SUB return NULL for valid composite second intervals

Open
#28,149 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`,`DATE_ADD/DATE_SUB` 无法处理多种合法的复合 interval,尤其是包含秒和 fractional seconds 的 `MINUTE_SECOND`、`HOUR_SECOND`、`DAY_SECOND`:

```sql
SELECT DATE_ADD(
'2024-01-31 23:59:59.123456',
INTERVAL '1 02:03:04.500000' DAY_SECOND);

SELECT DATE_ADD(
'2024-01-31 23:59:59.123456',
INTERVAL '-1 02:03:04.500000' DAY_SECOND);

SELECT DATE_SUB(
'2024-01-31 23:59:59.123456',
INTERVAL '1 02:03:04.500000' DAY_SECOND);
```

三条语句均返回 `NULL`。同一语句中的 `YEAR_MONTH` 复合 interval 可以正常计算,说明问题集中在 `DAY_SECOND` 解析/执行路径。

进一步矩阵显示 `DAY_HOUR` 和 `HOUR_MINUTE` 可以计算,而 `MINUTE_SECOND`、`HOUR_SECOND`、`DAY_SECOND` 均返回 `NULL`。

## 期望

合法的 `DAY_SECOND` interval 应按天、时、分、秒及 fractional seconds 计算,并保留输入精度;正负 interval 都应得到对应日期时间,而不是静默返回 `NULL`。

## 影响

依赖 MySQL 复合 interval 语法的账期、持续时间和时间序列计算会丢失结果,且没有明确错误提示。

## 复现信息

- 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.