Skip to content

feat: improve Oracle and OceanBase object management and query safety - #11715

Closed
efeire wants to merge 633 commits into
t8y2:mainfrom
efeire:integrate/oracle-ob-all-20261010
Closed

efeire wants to merge 633 commits into
t8y2:mainfrom
efeire:integrate/oracle-ob-all-20261010

Conversation

@efeire

@efeire efeire commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

完善 Oracle 和 OceanBase Oracle 的对象管理、结构编辑与迁移能力,修复查询结果编辑、SQL 解析和事务状态问题。

范围 本 PR 解决的问题与改动
对象浏览与 SQL 补全 支持对象条件分页、过程与函数搜索、同义词列补全与目标定位、包成员及重载签名补全;补充对象状态和编译错误位置。
查询与数据读写 修复单表星号查询的 ROWID 行定位、DBLink 与参数识别;增加 CLOB 按需全文读取、BLOB 预览与原始字节下载;保留数值精度、scale 和时间值的复制导出语义。
表结构与触发器 支持主键、外键、CHECK 和唯一约束编辑,按 OceanBase 版本限制索引类型并支持函数表达式;提供完整触发器定义编辑、导出与恢复材料,保留常规表结构克隆及空间统计。
程序对象与迁移 支持过程、函数、包、触发器和 TYPE 的比较、部署或迁移,以及同义词和 DBLink 迁移;复用完整源码读取,记录取消或失败后的未执行结果。
对象变更保护 增加普通视图、过程、函数与包的改名预览和旧对象保护;包规格与包体一起处理,旧包清理单独确认;阻止生成未经验证的物化视图改名 SQL。
管理与诊断 增加 TYPE 源码与元数据查看、Scheduler 作业管理、无效对象编译、会话及阻塞链查看、用户角色授权查看和变更预览;补充 DML 估算计划、游标统计、显式运行诊断与查询前健康检查计数。
事务安全 防止旧事务的异步 COMMIT 清理覆盖新事务状态。

Evidence

  • 当前提交:138c8d31009697f183f8db0711652a875bb4d811。已合入上游 13601ebe1 并解决 4 个文件的冲突,同时保留 MySQL 外键检查选项和 Oracle/OceanBase 程序对象校验、只读保护及双方测试。
  • 当前提交本地验证通过:前端相关回归 662 项、Rust SQL 结构包 760 项单元测试和 18 项集成测试、vue-tsc、前端 lint/格式与 cargo fmt --check。GNU 工具链下的 Web 后端 cargo check 通过;该检查使用精简 feature 组合,不替代完整平台 CI。上游 CI 与 fork CI 已启动,结果待确认。
  • 合并前已完成完整 fork CI 的提交:1acbcb40b9385355245e7ec4f115a716d813e010。以下完整 CI 数字属于该历史提交,不代表当前提交已全绿。
  • fork CI 已成功,49 项任务通过;jdbc 和 offline-jdbc-release 因路径筛选未命中而跳过,不计为运行通过。I18n Autofill 另行成功。
  • Rust workspace Nextest 为 9356 项通过、313 项跳过。前端类型、格式及两分片测试,Java/Go/Rust Agent、适用 Agent 集成矩阵、标准 Windows、Win7、packages 和汇总门禁均通过。
  • Before: 触发器解析会把 UPDATE OF ENABLE, DISABLE 中的列名当作状态;分页列表缺少 TYPE 筛选入口;比较阶段的 ALL_DEPENDENCIES 清单会遗漏不可见的跨 Schema 调用者。针对这些场景新增回归并复现失败。
    After: 按语法位置识别触发器状态,补齐 TYPE/TYPE_BODY 筛选,并通过 DBA_DEPENDENCIES 读取完整传入依赖。相关回归通过,新增两项 Linux Agent RPC 测试也明确执行通过,覆盖外部调用者保护、权限拒绝和不完整结果。
  • 当前 CI 配置与已合入的上游基线 13601ebe1 一致,未削减检查范围。fork 结果不替代本 PR 的上游 CI。
  • 尚未完成本次整合版本的 Oracle/OceanBase 实库和 GUI 验收;原生 OCI 等既有暂缓范围未纳入完成声明。

Merge danger

Door: two-way for code. 代码可回退,但实际执行的 DDL、权限变更和数据迁移可能不可回退,需分别确认并保留恢复材料。

Blast radius: broad. 涉及桌面前端、HTTP/Tauri 协议、Rust 核心、Oracle Go Agent 和 OceanBase Java Agent。共享查询、结构比较与迁移路径需要跨数据库回归。

Oracle/OceanBase 程序对象比较需要读取 DBA_DEPENDENCIES 的权限;无法取得完整传入依赖时拒绝继续,不退回可能漏项的 ALL_DEPENDENCIES 清单。需在实库验收中核对目录支持和权限配置。

Related issues

以下 issue 用于需求追溯,不代表所有场景已完成验收。

关联 issue(48 项)

Related PRs

以下 PR 用于实现来源追溯,本 PR 提供统一整合版本。

来源 PR(48 项)

efeire added 30 commits October 10, 2026 06:04
efeire added 26 commits October 10, 2026 18:42
# Conflicts:
#	agents/drivers/oracle-go/main_test.go
#	apps/desktop/src/composables/__tests__/useSidebarTreeExportRuntime.spec.ts
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
# Conflicts:
#	apps/desktop/src/lib/__tests__/database/OracleSecurityAdmin.component.spec.ts
#	crates/dbx-core/src/schema/mod.rs
#	crates/dbx-web/src/main.rs
#	crates/dbx-web/src/routes/mod.rs
#	src-tauri/src/commands/mod.rs
#	src-tauri/src/lib.rs
# Conflicts:
#	apps/desktop/src/components/structure/TableStructureEditor.vue
#	crates/dbx-core/src/schema/mod.rs
#	crates/dbx-web/src/routes/mod.rs
#	src-tauri/src/commands/mod.rs
# Conflicts:
#	apps/desktop/src/components/objects/ObjectBrowser.vue
#	apps/desktop/src/components/objects/__tests__/ObjectBrowser.viewRename.component.spec.ts
#	apps/desktop/src/components/sidebar/SidebarTreeRuntimeHost.vue
#	apps/desktop/src/components/sidebar/__tests__/SidebarTreeRuntimeHost.viewRename.spec.ts
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
#	crates/dbx-sql-core/src/lib.rs
#	crates/dbx-sql-core/src/object_source_sql.rs
# Conflicts:
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
#	apps/desktop/src/lib/__tests__/table/objectRenameSql.spec.ts
#	crates/dbx-sql-schema/src/db_admin_sql.rs
# Conflicts:
#	apps/desktop/src/composables/__tests__/useSidebarTreeExportRuntime.spec.ts
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
#	crates/dbx-core/src/data/transfer.rs
#	crates/dbx-core/src/schema/agent_metadata_fixture.py
#	crates/dbx-web/src/routes/transfer.rs
#	src-tauri/src/commands/transfer.rs
# Conflicts:
#	apps/desktop/src/components/structure/TableStructureEditor.primaryKey.spec.ts
#	apps/desktop/src/components/structure/TableStructureEditor.vue
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
# Conflicts:
#	apps/desktop/src/lib/table/tableStructureEditorState.ts
#	crates/dbx-driver-mysql/src/ob_oracle.rs
# Conflicts:
#	agents/drivers/oceanbase-oracle/src/main/java/com/dbx/agent/oceanbaseoracle/OceanBaseOracleAgent.java
#	agents/drivers/oceanbase-oracle/src/test/java/com/dbx/agent/oceanbaseoracle/OceanBaseOracleObjectListTest.java
#	apps/desktop/src/i18n/locales/es.ts
#	apps/desktop/src/i18n/locales/it.ts
#	apps/desktop/src/i18n/locales/ja.ts
#	apps/desktop/src/i18n/locales/ko.ts
#	apps/desktop/src/i18n/locales/pt-BR.ts
#	apps/desktop/src/i18n/locales/ru.ts
#	crates/dbx-types/src/types.rs
# Conflicts:
#	apps/desktop/src/composables/__tests__/useDataGridExport.spec.ts
Guard CLOB downloads against result replacement, use the supported OceanBase privilege catalog, order packages with selected standalone programs, and stop prerequisites on blocked database links. Add regressions and remove duplicate test definitions that prevented core test compilation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant