Repository navigation
Kingbase - #5875
Draft
lifeng5210 wants to merge 35 commits into
Draft
Kingbase#5875lifeng5210 wants to merge 35 commits into
lifeng5210 wants to merge 35 commits into
Conversation
…ySQL 的 Bytes 字段标记为 Base64 编码,供 Query Interpreter 正确还原 JSON 聚合结果。
新增 Kingbase MySQL 兼容模式的原生连接器, 适配 SQL visitor、类型转换、连接配置和测试覆盖。
让 query-compiler 在 Kingbase MySQL 模式下使用 KingbaseMysql 模板 visitor, 保留参数模板和 JSONPATH 元数据,并补充相关 feature 与模板测试。
新增 Kingbase MySQL 的原生连接、Schema 内省、迁移渲染和测试覆盖。 为无法隐式转换的原生类型变更生成 USING 表达式,并完整支持 MySQL BIT 类型。
同步当前诊断输出格式,确保 Kingbase MySQL 原生类型校验的 40 项测试全部通过。
允许 Kingbase MySQL 连接器同时校验 `kingbase-mysql://` 和 `kingbase://` 两种数据源 URL。
将 MySQL 全文检索 SQL 重写为 Kingbase 的 tsvector/tsquery 语法, 使用 GIN 表达式索引完成迁移生成与 introspection,并补充 schema push 全文索引创建和幂等性测试。
补充 Kingbase MySQL 的连接、类型映射、SQL 生成、迁移与反向工程支持,修复索引排序、复合外键、默认值解析及全文查询兼容性问题,并完善相关测试。
- 修正默认端口、TLS 参数解析和错误映射 - 支持 Query Compiler 动态全文检索参数 - 修正迁移重试指数退避并补充覆盖 - 对齐 Kingbase PSL 快照与编译 feature
- 增加 kingbase-oracle provider、原生类型映射与 Schema 校验 - 实现独立的 Oracle 模式连接、类型编解码、错误处理和连接池路由 - 新增 Oracle SQL Visitor,支持 CRUD、RETURNING、分页、事务、JSON 与安全 MERGE upsert - 补充 Oracle 原生类型及真实连库测试,并保持数组和全文检索明确不支持 - 为 Query Compiler 与 Schema Engine 注册 Oracle SQL family 的显式未实现分支
接入 Kingbase Oracle 模式的 Schema Engine 迁移、内省与数据库描述能力,补充原生类型及集成测试; 同步完成 PSL、Quaint 的配套调整, 同时修复 Kingbase MySQL 动态全文检索和窄无符号整数范围处理。
- 注册 Query Compiler 与 Wasm 的 Kingbase Oracle provider 和 SQL family - 支持 Oracle 全文检索及 relation join 嵌套二进制字段的十六进制映射 - 校准 PSL 能力声明、原生类型测试和单迁移 fixture 分隔符解析 - 补充 JSON protocol、相关度排序与回归测试
- 支持 Oracle TINYINT 的 PSL、迁移渲染和数据库反射 - 修正 Oracle JSON 比较及关系连接 MERGE 参数行渲染 - 补充 Kingbase MySQL DOUBLE 参数推断的回归测试
- 更新 PSL 原生类型校验的纯文本错误快照 - 明确 DOUBLE 比较参数在预编译元数据中报告为 Text
- 使用 NUMBER 和序列生成自增值,保证主键与外键类型一致 - 将 ROWID 映射为文本,并将 TINYINT 正确解码为整数 - 补充自增外键、ROWID 和 TINYINT 的数据库回归测试
- 恢复使用驱动现有的二进制查询路径 - 移除尚未完整支持的 ROWID 和 TINYINT 类型映射 - 删除对应的原生查询测试,保留自增主外键迁移修复
- 接入共享迁移和内省测试的标签与能力筛选,新增独立的 Oracle 测试 DDL 生成器。 - 统一全大写标识符折叠和空字符串默认值处理,修复默认值引号转义及自增转普通默认值时的丢失问题。 - 区分唯一约束与独立唯一索引,保证外键引用及约束删除使用正确的 Oracle SQL。 - 完善枚举参数类型推断、结果解码与枚举变更差异计算,修正数值和时间类型转换的风险判定。 - 适配 Oracle NUMBER 结果断言、原生类型预期和诊断快照,补充失败迁移的 DDL 回滚与历史诊断回归测试。 - 更新 Kingbase 测试覆盖范围、执行统计及维护注意事项。
- 修复索引、约束、类型转换及无符号整数范围处理 - 改用 sys 接口,修正类型校验、SQL 转义及全文参数标记 - 补充实库回归,固定驱动修复版本并更新 Cargo.lock 注:驱动提交暂未推送;全文参数需配套更新 adapter。
MySQL 模式: - 修复唯一键错误暴露物理索引名,恢复用户定义的逻辑名称,并兼顾事务失败及迁移建索引失败场景。 - 修复 INCLUDE 列被误认为索引键、字符串及枚举默认值重复解码、表达式或截断 CAST 被错误简化的问题;主键 DDL 省略实例不支持的默认 ASC。 - 为显式自增 ID 参数补充编译器元数据,供 JS adapter 正确回读插入 ID;拒绝独立 SQL 数组绑定和结果读取,保留 JSON 数组及 IN 查询。 - 登记共享测试的 JSON、枚举能力,同步枚举逻辑名及基础迁移中物理索引名、逻辑名称注释的预期。 Oracle 模式: - 使用独立描述器、默认值解析及连接器元数据,移除对 PG 描述器、类型解析和枚举渲染的委托;优先使用 Oracle 字典,缺失信息通过已核实的金仓 sys 接口补充,迁移锁改用 sys_advisory_lock。 - 修复索引与约束归属、INCLUDE 键列、默认值 CAST 和字面量解析,以及错误的类型等价判断;按实例能力校验 NUMBER、字符类型及不可直接转换的类型。 - 修复枚举增删、临时类型名称冲突及外键依赖处理;完善自增序列命名、命名空间、已有数据计数校准和所有权处理,避免误删外部或仍被引用的序列。 - 统一 schema 物理名称与连接 search_path、迁移比较、反查及 reset 的处理,消除全大写名称导致的重复迁移,保留混合大小写名称的区别。 - 修复关系 JSON 中大整数及 Decimal 精度、JSON 路径键名和长字符串处理;补齐 ROWID/TINYINT 查询元数据及 JsonNull/DbNull 输入能力登记。 - 移除 Oracle feature 对 PostgreSQL 的隐式依赖,修复单独启用 Oracle native 或两种 Kingbase native 时的构建失败。 代码组织与依赖: - 按原框架布局调整两种 flavour 入口、native 模块及驱动 defaults 模块;将 MySQL 9 段、Oracle 10 段反查 SQL 提取为独立 *_query.sql,保持查询语义不变。 - Oracle 默认值解析归入 default.rs,专用编译器回归移入各自测试文件,测试模块置于文件末尾;原 PG 专用文件保持不变。 - 金仓 Rust 驱动固定到 11a0a2ed3286eb791900ff43ea02114a63937e24,同步 Cargo.lock,并更新适配与验收记录。 验证:补充并执行相关迁移、反查、描述器、驱动和编译器回归;结构整理后两模式专用 schema 实库测试共 269 项通过,四组 feature 构建、严格 Clippy 和格式检查通过。本次不表示所有共享测试及此前延期事项均已验收。
- 将适用的属性、配置、类型、关系及格式化场景接入金仓两种模式 - 按原框架组织补充能力测试和测试夹具,统一金仓完整错误快照格式 - 更新测试记录;PSL 全特性测试 1479 项通过,严格 Clippy 和格式检查通过
- 全文搜索统一使用金仓 tsquery,移除 Boolean Mode 解析及参数转换标记。 - BLOB→BIT、日期时间→数字交由金仓原生转换,失败时不删除重建源列。 - SUM 保留实际参数类型绑定,取消整数强制提升为 NUMERIC。 - 拒绝三种小无符号整数,删除域和触发器模拟;旧对象保留并反查为 Unsupported,不兼容外键要求人工迁移。 - 更新校验、迁移、反查、查询及编译器回归测试,补充 Oracle 共享测试接入说明。
- 新增金仓 MySQL、Oracle 模式的默认连接池容量与自定义 connection_limit 测试 - 将 Oracle 接入共享枚举和 JSON 列比较测试,适配自增主键与 JSON 原生类型元数据,并清理枚举测试对象 - 将 Oracle 接入字符串长度超限和外键约束错误测试,使用 VARCHAR2 列定义 - 补充 Oracle 本地测试连接环境变量
- 新增独立 Kingbase Oracle DDL 模块及 feature 登记,接入 Oracle renderer,沿用现有 DDL 构造器与 renderer 的职责组织 - 恢复通用 MySQL DDL 和 visitor 的原有输出,将金仓所需的标识符转义限定在自己的 renderer 和专用 visitor 入口 - 撤销原生 MySQL 的 SET 文本类型识别扩展,恢复原有类型识别和 NULL 解码边界 - 清理 PostgreSQL 未使用的约束跟踪标记、可见性扩展,以及共享 differ 中没有实际 override 的钩子 - 精简 AGENTS 工作约定,修正 PSL、Schema Engine、Wasm 构建及测试框架文档 验证:金仓双模式迁移、反查、描述器、Quaint 及配套 Client/类型回归通过;PSL、DDL 和相关单元测试通过。联动 Client 测试使用当前源码 Wasm。
|
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
|
- 将 MySQL、Oracle 两模式的 to_config 移至各自 native/mod.rs,url.rs 负责连接信息解析。 - 使用 Config::new() 逐项设置驱动配置,保留已有连接选项、默认端口、TLS、schema、超时及编码行为。 - 按 Url 的组成部分构造配置,fragment 不再传入驱动;地址中的特殊字符应进行 URL 编码。 - 保留现有查询、事务及查询描述实现,不引入查询缓存,不改动原生 PostgreSQL/MySQL 路径。 - 增加与旧实现的配置对照回归,并同步仓库工作约定。 验证:263 项金仓实库测试、74 项单元测试通过;4 组 feature 编译、相关 Clippy、格式及 diff 检查通过。
将分别手写的列类型映射和解码分类改为由同一张映射表生成, 采用与金仓 MySQL 模式相同的分类枚举和 validator 结构。 结果解码移入 conversion.rs,通过穷尽匹配和 v.read() 约束输出类型。 保留 Oracle DATE 的日期与时间、NUMBER 的 Numeric 结果及 catalog 文本数组解码;ROWID、TINYINT、TIMETZ 继续仅提供类型元数据, 不扩展原生二进制解码支持。补充整数、NULL、空结果集及元数据边界回归。 验证:40 项相关测试通过(36 项实库、4 项普通单测);Oracle 单模式、 双模式和非 native 组合编译通过,双模式库 Clippy 及格式检查通过。
- 修正 Oracle 大小写不敏感过滤及列可空性变更语法。 - 调整 MySQL 无符号整数 DDL,移除旧 TINYINT 布尔推断并复用驱动解码。 - 补充过滤、迁移及 XML 类型回归测试。
- 接入三种小无符号整数类型及其自增限制,清理旧模拟类型的专用兼容逻辑 - 恢复 JSON 函数、大小比较、SUM 和 UUID 的原生 MySQL 生成方式,保留全文查询适配 - 补齐 R3 JSON 基础类型的框架转换,修正 BIT 有效位编码和结果字节排列 - 调整 MODIFY、前缀及降序唯一索引的生成,保留已有自增主键并正确处理自增属性 - 修复数字和日期时间默认值反查,保留有意义的类型转换,避免重复生成迁移 - 隔离 CHECK 与外键的 schema 范围,修正同名外键关联及真实 CHECK 被误过滤的问题 - 按列实际引用的类型读取枚举值和默认值,支持枚举类型位于其他 schema 的反查 - 补充模型校验、SQL 生成、类型转换及迁移反查回归 底层驱动及依赖 pin 未修改;驱动目录校验、BIT(7) 回读和已知数据库差异仍单独保留,完整 CLI 链路尚未全部验收。
- 调整默认 Decimal 的 NUMBER 映射和精度校验,修复原生类型反查与迁移判等 - 修复数值参数编码宽度、Boolean 绑定及 TINYINT 解码,增加越界检查 - 修复 raw DateTime 显式绑定的时区偏移,保留模型时间语义并取消强制 UTC 会话设置 - 对 R2 已支持的聚合、JSON 和表结构操作采用 Oracle 写法,修复嵌套关联 JSON 重复键 - 修复 identity 整数扩容、默认值解析和重复迁移,以及降序唯一索引的外键校验 - 移除共享 identity 重建和手工外键属性的额外保留,保留普通序列归属及共享引用处理 - 补充类型、查询、模型校验、迁移和反查回归测试
- 将 Kingbase Rust 驱动切换至 lifeng5210/rust-kingbase-prisma,固定版本 15da36bb 并同步 Cargo.lock - BIT 参数优先保留声明位宽,结果按列宽恢复前导零,补充非整字节、零值、NULL 和边界实库回归 - 为 KES MySQL 查询计划传递 BIT(n) 元数据,供 JS 适配器按字段位宽编码,保留原生 MySQL/PG 类型名 - TINYINT 编码增加范围校验,拒绝越界值,避免强转导致静默回绕 - 适配新驱动的 DATE/TIME 编解码和 ENUM/SET 类型识别 - 修正 AST 数字参数被推断为 TEXT 时的绑定,覆盖 JSON 数值比较、SUM 及更新删除路径 - 按目录 OID 与列序号关联外键,完善 schema 隔离和目录排序,修正关系遗漏及重复迁移 - 更新 R3/R2 测试连接及原生类型、默认值、视图和转换用例预期
- 合并 MODIFY COLUMN 类型选择中的等价分支,移除不再使用的变更参数 - 在 MySQL flavour 内复用二进制、字符串、数值和 JSON 类型分类函数 - 将全文参数辅助函数明确为校验用途,返回 Result<()>,移除多余生命周期 - 合并全文 SQL 的固定拼接片段,保留参数校验、simple 配置及查询语义 验证:Schema Connector 单元测试 89 条通过、1 条原有忽略;首轮精简后 Quaint 双模式回归 388 条通过、Query Compiler 回归 8 条通过;Rustfmt 和差异格式检查通过。
- 更新 schema-tools Wasm 的本地构建命令、工具链要求和产物路径 - 明确两类 Schema Wasm 的版本变量、构建方式及连接器支持范围 - 统一 Prisma Config 中数据库连接与影子库的配置说明 - 精简 PSL 结构描述,移除过时说明并更新 Wasm 调用示例
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.