matrixorigin / matrixorigin/matrixone
Transactions: SAVEPOINT not implemented
- 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
Assessment
This issue has not been assessed yet.