matrixorigin / matrixorigin/matrixone

[TestCase]: Java + MyBatis+MO framework scenario testing

Open
#26,623 5 comments 0 reactions 1 assignee Assigned to @Ariznawlll View on GitHub
kind/feature needs-more-tests
Dominant language
Go
Stars
1.9k
Forks
311
Avg merge
1d 3h
Merged PRs (30d)
768

Description

# Java + MyBatis+ MatrixOne 业务场景测试覆盖清单

> 目标:验证 Java 应用经 JDBC/ORM 使用 MatrixOne 的正确性、兼容性与稳定性。

## 最小必过(发布门禁)

- [ ] JDBC 连接池 + 事务 + PreparedStatement + 常用类型冒烟
- [ ] 主 ORM(MyBatis / Hibernate 至少其一)CRUD + 关联 + 事务链路
- [ ] 已知兼容差异回归(collation / FLOAT·DOUBLE / SAVEPOINT 等)
- [ ] BenchBase TP 或 CH 性能基线(对比上次发布)
- [ ] 断连恢复 + 长稳抽检(≥30min)

---

## 1. 连接与运行时

- [ ] MySQL JDBC(Connector/J)直连 CN
- [ ] 经 Proxy 连接
- [ ] 连接池(HikariCP 等):借还 / 超时 / 校验 / 无泄漏
- [ ] 断线重连
- [ ] CN 或 Proxy 重启后客户端可恢复
- [ ] 租户账号认证
- [ ] Proxy `?workload=tp|ap` 路由(若生产启用)
- [ ] SSL(若生产启用)

## 2. JDBC 核心能力

### 2.1 Statement / PreparedStatement

- [ ] `Statement` execute / executeUpdate
- [ ] `PreparedStatement` 绑定与执行
- [ ] 批量(Statement / PreparedStatement batch)
- [ ] 生成主键(`getGeneratedKeys`)
- [ ] JDBC escape `{fn ...}`(若业务使用)

### 2.2 事务

- [ ] autocommit on/off
- [ ] commit / rollback
- [ ] `READ COMMITTED`(及业务实际使用的隔离级别)
- [ ] Savepoint(明确:支持则测;不支持则记录为 known gap,不作为必过)

### 2.3 类型往返

- [ ] 整型 / 浮点
- [ ] `DECIMAL` / `BigDecimal`
- [ ] 字符串 / 时间日期(含 `LocalDate` / `LocalDateTime` 若使用)
- [ ] BLOB / CLOB
- [ ] NULL / `wasNull`

### 2.4 ResultSet / MetaData / 错误

- [ ] 前进遍历 ResultSet
- [ ] 常用 `ResultSetMetaData` / `DatabaseMetaData`(业务实际用到的)
- [ ] 错误码 / SQLState 可被业务处理
- [ ] 可更新 ResultSet(若业务不用可标 N/A;已知 MO gap)
- [ ] FK metadata `getImportedKeys`(若 schema 工具依赖;已知 MO gap)

## 3. SQL / MySQL 兼容(按业务白名单)

### 3.1 DDL / DML / 查询

- [ ] 建表 / 改表 / 删表(业务实际 DDL)
- [ ] INSERT / UPDATE / DELETE / SELECT
- [ ] 主键 / 唯一约束 / 二级索引
- [ ] JOIN / 子查询 / 聚合 / 分组
- [ ] CTE / 窗口函数(若业务使用)

### 3.2 事务与锁

- [ ] `SELECT ... FOR UPDATE`(若业务使用)
- [ ] 冲突写 / 超时行为符合预期

### 3.3 高频函数(白名单,非全量)

- [ ] 日期时间函数(业务用到的集合)
- [ ] 字符串函数(业务用到的集合)
- [ ] 聚合函数
- [ ] JSON 读写(若业务使用;区分 EXTRACT vs 未实现的 JSON_* 族)

### 3.4 已知语义差异回归(必测)

- [ ] 排序规则 / 大小写比较(`_ci` / binary)
- [ ] `FLOAT` / `DOUBLE` / `DOUBLE PRECISION`
- [ ] `SAVEPOINT` / 嵌套事务
- [ ] 隐式混合类型转换(对比 MySQL)
- [ ] `LAST_INSERT_ID` 多行插入行为(若业务依赖)
- [ ] `CHECK` 约束是否真正生效(若业务依赖)

## 4. 常见 Java 业务栈(按客户选型勾选)

### 4.1 裸 JDBC / 模板

- [ ] 事务模板下的 CRUD
- [ ] 分页查询
- [ ] 批量写入

### 4.2 MyBatis

- [ ] Mapper CRUD
- [ ] 动态 SQL
- [ ] 批量 / 分页
- [ ] 多结果 / 关联映射(若使用)

### 4.3 Hibernate / JPA

- [ ] 实体映射与常用类型
- [ ] 关联(1:1 / 1:N / N:M 中业务用到的)
- [ ] 事务边界
- [ ] 查询(JPQL / Criteria 中业务用到的)
- [ ] schema 工具(`hbm2ddl` / validate;若使用)

### 4.4 Spring Data JPA

- [ ] Repository CRUD
- [ ] 派生查询 / `@Query`
- [ ] 事务注解边界

## 5. 业务形态负载(正确性 + 性能)

### 5.1 功能形态

- [ ] OLTP:下单 / 支付 / 库存类事务链路
- [ ] 读写混合:列表页 + 详情 + 更新
- [ ] 报表 / AP 查询(若 HTAP)
- [ ] 热点行更新

### 5.2 标准压测(可选但对标有用)

- [ ] BenchBase TPC-C(纯 TP)
- [ ] BenchBase CH-benCHmark(TP + AP;MO 侧双进程 + workload 路由)
- [ ] 与上次发布 / MySQL 基线对比(TPS、延迟、abort)

### 5.3 稳定性

- [ ] 长稳 ≥ 30min(建议数小时)
- [ ] 高峰连接数 / 连接风暴
- [ ] 查询超时 / 取消行为
- [ ] 无连接泄漏、无会话挂死

---

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.