matrixorigin / matrixorigin/matrixone

Transactions: SAVEPOINT not implemented

Open
#23,125 3 comments 0 reactions 1 assignee Assigned to @XuPeng-SH View on GitHub
Dominant language
Go
Stars
1.9k
Forks
311
Avg merge
1d 3h
Merged PRs (30d)
768

Description

## Description

在事务中使用 `SAVEPOINT` 与 `ROLLBACK TO SAVEPOINT` 会触发内部错误:`savepoint has not been implemented yet. please rollback the transaction.` 表明 MatrixOne 尚未实现 MySQL 标准的保存点语义。

## Error Message

```
ERROR 20101 (HY000) at line 8: internal error: savepoint has not been implemented yet. please rollback the transaction.
```

## Related Table DDL

```sql
CREATE TABLE temp_txn_savepoint_2274 AS
SELECT id, company_name FROM company LIMIT 5;
```

## Reproduction SQL

```sql
START TRANSACTION;
UPDATE temp_txn_savepoint_2274 SET company_name = CONCAT(company_name, '_tx') WHERE id % 2 = 0;
SAVEPOINT before_revert;
UPDATE temp_txn_savepoint_2274 SET company_name = CONCAT(company_name, '_rollback') WHERE id % 2 = 1;
ROLLBACK TO SAVEPOINT before_revert;
COMMIT;
```

## Impact
- 无法在长事务中做分段回滚,影响复杂 DML/调度流程。
- MySQL 应用中依赖保存点的逻辑(如在线 DDL 工具、分批写入等)全部失效。

## Expected Behavior
MySQL 允许创建多个保存点,并可回滚到任意保存点,同时保持事务继续。MatrixOne 应支持同等语义或提供清晰的功能缺失提示。

## References
- 报告: `report_test_batch_228_txn_boundary_20251124_154800.md` Case 2274 等 10 个用例。

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.