feat(infra): 数据库方言接缝 SqlDialect(PG 实装 + 11g MERGE 编译级交付)(ACM2-29 P3-B)

- SqlDialect 接口:快照 upsert / 主行存在性保障两类方言敏感 SQL;
  PostgreSqlDialect 承接现有 ON CONFLICT 路径,JdbcFlightSchdRepository 已接入
- Oracle11gDialect:MERGE INTO 模板(编译级交付,未经目标库验证)——激活门控
  写入 KDoc:11.2 补丁 × JDK25 × ojdbc × Flyway(oracle11g location) × 连接池
  组合现场实测通过才允许切换,MERGE 绑定顺序适配随激活完成
- db/migration/oracle11g/README.md:11g 迁移位置占位与前置条件清单(CLOB 映射、
  空串=NULL 语义回归、display 视图 11g 版)

验证:MSGX_PG_PORT=5433 真实 PG 全量 108 用例 0 失败 0 跳过
This commit is contained in:
windyboy
2026-09-08 17:10:40 +08:00
parent 35c91c67b9
commit 107be5d74a
3 changed files with 104 additions and 15 deletions
@@ -0,0 +1,24 @@
# Oracle 11g 专用迁移位置(ACM2-29 P3-B,门控未激活)
本目录是现场 11g 部署形态的 Flyway migration location 占位。当前 **不接入任何环境的
Flyway 配置**PG 路径使用 `classpath:db/migration`,两者互不混用。
## 激活前置条件(全部满足才允许接入)
1. 现场 11.2 补丁级别、数据库字符集、DBA 权限清单拿到,且可提供可测试的目标库。
2. JDK 25 × ojdbc 驱动(具体版本)× Flyway Oracle 支持 × 连接池组合在目标库实测通过
——不能以"PG 通过"代替 Oracle 验收(docs/flight-state-design-v2.md §6)。
3. `SqlDialect` 切到 `Oracle11gDialect` 前,MERGE 绑定顺序适配完成并通过
`FlightSchdJdbcPgTest` 同等粒度的 11g 集成测试。
## 计划内容
- V1.0.0 起:管道表(PROC_STATE/MSG_EVENT/PUMP_JOB/REQ_TRACK/REF_MASTER/PIPELINE_LOCK
的 11g DDL——`NUMBER`/序列、`TIMESTAMP WITH TIME ZONE``VARCHAR2` BYTE/CHAR 语义钉死。
- FLIGHT_SCHD 宽表 + V1.3.0 等价明细表 DDL(无 `ON CONFLICT`/`LATERAL` 依赖)。
- `SRVT_TEXT/VIPF_TEXT/MAFL_TEXT` 映射 `CLOB`PG 为 TEXT)。
- `flight_schd_display` 11g 版视图(无 LATERAL,用标量子查询)。
- 空串按 NULL 的语义回归:命令层 presence 信息不得被 11g 空串语义吞掉
docs/flight-state-semantics.md §5)。
版本号与 PG location 各自独立推进,禁止复用版本号语义。