feat(oracle): 支持 dblink 补全、连接树展示与管理 - #8945
Conversation
Oracle resolves object@link against the login user's private links and PUBLIC links; ALTER SESSION SET CURRENT_SCHEMA never enables or disables either, and the link query already restricts owners to SESSION_USER and PUBLIC, so the current-schema filter only hid usable links after a schema switch
|
感谢详细的自测报告,整体实现质量很高(树节点、DDL 权限钉定、防注入、竞态防护都符合仓库既有模式)。我在 私有链接的补全过滤依据应是登录用户,而不是当前 Schema。 原过滤的前提(注释 "Oracle resolves a private link in the current schema")与 Oracle 实际行为不符: 两个不阻塞的小备注:es/it/ja/ko/pt-BR/zh-TW 的 |
t8y2
left a comment
There was a problem hiding this comment.
Full review done across all heads. Implementation quality is high — the streaming bounded-memory core... correction: the tree node, DDL permission pinning, injection guards, and race protections all follow existing patterns. Your test compile follow-up and my two patches (login-user dblink completion semantics, readonly-list copy before sort) are in; all checks green. Merging.
|
Thanks for the contribution! Merged in b8f39f9, will be released in the next version. |
Oracle 查询编辑器在输入
DUAL@时,现在会列出当前登录用户可用的私有/公有 database link,并直接插入完整链接名(包括域名)。Oracle 连接下新增独立的「数据库链接」分组,可查看、搜索、创建、测试、更新保存的远程凭据和删除链接。ALL_DB_LINKS获取登录用户和 PUBLIC 的链接,切换到其他 Schema 后仅补全公有链接;同名链接在本用户 Schema 下优先私有链接。管理操作明确使用登录用户 Schema,避免被编辑器的 Schema 切换影响。ALTER [PUBLIC] DATABASE LINK;更换远程用户或连接字符串需新建链接。操作保留现有只读/生产环境执行保护,并展示数据库实际权限错误。实际验证
基于 main
8ff56b483,从正式版 DBX 数据目录导入 7 个 Oracle 测试连接至隔离数据目录,用 PR 前端和本地构建后端通过真实 Oracle Agent 验证。编辑器实测:输入
@自动弹出、大小写前缀、带点域名、光标中间替换、手动补全、选择后不追加所有者/别名;在 SYSTEM Schema 中使用私有链接、切换 DBX_TEST Schema 后使用公有链接,均返回DBX_LINK_OK = 1;后者不会再建议无法使用的 SYSTEM 私有链接。亮色/暗色界面截图见下方。本地检查:类型检查通过;补全、连接树元数据与主题/插入回归共 295 项通过;
cargo build -p dbx-web --no-default-features --features dbx-core/sqlite-bundled通过。临时链接和为 11g SYSTEM 测试临时授予的两项 ALTER 权限已清理。边界:此次浏览器界面验证使用与桌面端共享的 Vue 编辑器、连接树及管理组件;未执行 Windows 打包客户端验证。上述低权限账号没有提升权限来声称所有 Oracle 版本均完成写操作。
截图
CI:推送后检查中,以本次提交的 Actions 结果为准。
Fixes #7907
Fixes #7619
Fixes #8677
Fixes #7792
Fixes #5998