Commit Graph

648 Commits

Author SHA1 Message Date
Kunghim
2330a5a52d Merge upstream/dev into fix/884-composite-primary-key 2026-08-09 21:02:30 +08:00
Kunghim
52cd1936f7 fix(sync): support composite primary keys 2026-08-09 19:53:24 +08:00
Syngnat
56b46d95a8 fix(sync): constrain TDengine and IoTDB targets to append writes (#891)
## Summary

- expose append-only capability for TDengine and IoTDB targets
- constrain the delivery UI to INSERT/append and remove delete
propagation
- block mutation and delete configurations during backend preflight
- add Go and frontend regression coverage

## Verification

- Go sync capability and preflight regression tests passed
- frontend delivery and Wails DTO regression tests passed
- frontend production build passed
- Wails desktop build passed

Closes #883
2026-08-09 15:56:59 +08:00
Syngnat
01a7a6cbf0 🐛 fix(sqlserver): 避免 DDL 查看伪成功 (#890)
## 背景与问题

SQL Server 的 GetCreateStatement 会返回未支持的占位注释且不返回错误,调用方会将其视为成功 DDL。

Closes #882

## 变更点

- 原生 SQL Server DDL 不可用时返回明确、本地化的 unsupported 错误。
- 让既有 DDL fallback 使用字段和索引元数据生成可执行的 CREATE TABLE。
- 补充 SQL Server 原生错误和 fallback 控制流回归测试。
- 补齐六种语言的错误提示。

## 影响范围

- SQL Server DDL 查看不再显示伪成功的占位注释。
- 元数据可读取时,DDL 视图将展示 fallback 生成的表定义、主键、默认值和索引。
- 若 fallback 元数据读取失败,既有 UI 将展示后端错误。

## 验证方式

`	ext
go test -tags gonavi_sqlserver_driver ./internal/db -run
TestSQLServerMetadataErrorsUseCurrentLanguage -count=1
go test ./internal/app -run
TestResolveCreateStatementWithFallback_SQLServerBuildsFallbackDDL
-count=1
go test ./shared/i18n -run Test -count=1
` 

## 风险与回滚

未涉及数据库迁移或构建链路。没有真实 SQL Server Driver Agent
环境,真实服务端元数据兼容性仍待补充验证;如需回滚可直接回滚本 PR。
2026-08-09 15:56:57 +08:00
Syngnat
545ff37f6c 🐛 fix(rabbitmq): 避免字段元数据读取队列消息 (#889)
## 背景与问题

RabbitMQ 的 GetColumns 为推断 Payload 动态字段,会调用队列 /get 接口并使用
ck_requeue_true。该操作会实际读取并重新投递消息,使本应只读的字段元数据读取产生 Broker 副作用。

Closes #881

## 变更点

- GetColumns 仅返回 RabbitMQ 静态消息字段,不再读取队列样本消息。
- 保留 SELECT 查询的消息预览逻辑。
- 增加回归断言,确保普通字段元数据读取不会请求 /api/queues/{vhost}/{queue}/get。

## 影响范围

- 字段元数据和全库字段搜索不再触碰真实队列消息。
- payload.*、headers.*、properties.* 等样本推断字段不再自动出现在元数据中;项目当前没有显式样本读取入口。

## 验证方式

`	ext
go test ./internal/db -run RabbitMQ -count=1
` 

## 风险与回滚

不涉及数据迁移或构建链路。若需要恢复隐式动态字段推断,可回滚本 PR。
2026-08-09 15:56:54 +08:00
mango
bb882faac7 🐛 fix(sync): 明确未迁移索引并提供补救 DDL (#885)
Fixes #885
2026-08-09 15:49:18 +08:00
mango
f887deb44c 🐛 fix(rocketmq): 支持经隧道访问隔离网络 (#886)
Fixes #886
2026-08-09 14:22:41 +08:00
Kunghim
2b90a62159 fix(sync): constrain time-series targets to append writes 2026-08-09 14:11:19 +08:00
Kunghim
664c7a05d3 Merge remote-tracking branch 'upstream/dev' into fix/882-sqlserver-ddl-unsupported 2026-08-09 13:33:05 +08:00
Kunghim
52488cf3f7 🐛 fix(sqlserver): 避免 DDL 查看伪成功 2026-08-09 13:32:51 +08:00
mango
f74ebb05a5 🐛 fix(mongodb): 支持 SRV 连接使用 SSH 隧道 (#887)
Fixes #887
2026-08-09 13:23:27 +08:00
Kunghim
93fbb013e5 🐛 fix(rabbitmq): 避免字段元数据读取队列消息 2026-08-09 12:54:51 +08:00
Syngnat
390a249105 feat(data-import): 重构大文件导入与安全任务运行时
- SQL、CSV、JSON 与 XLSX 改为资源受限的流式解析,并支持压缩、编码和方言预检

- 增加遇错停止/继续策略、持久任务、错误行导出、源文件身份与安全取消

- 为数据库驱动补齐上下文事务和写入结果未知语义,避免失败重放与脏会话复用
2026-08-08 20:51:23 +08:00
Syngnat
11dbb1f9dd feat(sync): 接入同步任务编排与安全执行 API
- 接入任务持久化、生命周期、调度运行与检查点管理
- 提供 ID 作用域元数据、能力解析、预检和生产审批接口
- 串联水位与 MongoDB CDC 执行、错误行隔离及安全重放
2026-08-08 19:13:25 +08:00
Syngnat
23c40c36c4 🐛 fix(connection): 隔离保存连接中的扩展密钥
- 将 JVM 凭据与敏感连接参数拆入密钥存储
- 公共和编辑连接视图仅返回脱敏值与存在标记
- 完善连接包迁移、显式清除和密钥往返测试
2026-08-08 19:10:51 +08:00
Syngnat
bc02a4c614 feat(syncjob): 新增可恢复的数据同步任务运行时
- 持久化任务、运行、事件、检查点与错误行状态
- 支持调度、暂停取消、恢复重试、并发限制和故障接管
- 增加执行 fencing、连续失败退避与错误行重放租约
2026-08-08 19:06:57 +08:00
Syngnat
e40cdbc016 feat(synccdc): 新增 MongoDB 变更流适配器
- 建立 CDC 适配器注册、探测与安全游标契约
- 支持 MongoDB change stream、恢复令牌和批量读取
- 覆盖权限探测、取消关闭与流位置恢复测试
2026-08-08 19:06:36 +08:00
Syngnat
c91a1555a4 feat(sync): 完善跨数据源迁移与增量同步内核
- 增加迁移能力矩阵、对象字段映射与安全预检守卫
- 支持批大小、行错误隔离、水位增量和变更事件重放
- 复用 CDC 目标会话并补齐分页、投影与增量同步测试
2026-08-08 19:06:12 +08:00
AutumnNazi
9e661958fe 🐛 fix(sync): 禁止仅同步数据时修改表结构 (#878)
Fixes #878
2026-08-08 07:22:42 +08:00
Syngnat
14f24925ab 🐛 fix(query-editor): 支持 PostgreSQL 查询选择 Schema
- 在查询工具栏加载并持久化 PostgreSQL Schema
- 将选择的 Schema 安全注入 search_path,并保留显式连接配置
- 绑定事务、结果与元数据执行上下文,避免跨 Schema 误查询或写入
- 补充查询、DataGrid、独立窗口及差异比较回归测试

Refs #864
2026-08-07 23:25:25 +08:00
mango
303cb5cc79 🐛 fix(update): 启动时获取最新开发版更新 (#866)
Fixes #866
2026-08-07 19:48:43 +08:00
Syngnat
e406aba664 🐛 fix(mqtt): 修复 Broker 地址端口重复追加
- 前端统一规范化协议、主机与端口,清理历史重复端口配置
- 后端防御性解析 Broker 地址并兼容非默认端口与 IPv6
- 补充保存重开测试及 Broker 地址回归覆盖
2026-08-06 18:20:23 +08:00
Syngnat
32dfd39827 🐛 fix(query): 放开所有数据源默认查询超时
- 区分连接超时与查询超时,默认查询仅保留手动取消能力
- 清理各数据库及 HTTP 数据源由连接配置派生的请求超时
- 新增按请求 queryTimeout 透传并保留计数任务显式时限
- 补充前后端、缓存键与多驱动超时策略回归测试
2026-08-06 16:50:28 +08:00
Syngnat
0e46b9ff87 🐛 fix(mqtt): 修复 mqttBrokerAddresses 拼接端口号时重复追加的问题
- 问题根因:mqttBrokerAddresses 中主 broker 地址经过 net.JoinHostPort 再解析再格式化的冗余往返
- 触发条件:config.Host 中已含端口号时,net.JoinHostPort 会再次拼接导致 host:port:port
- 修复方式:去掉中间往返,直接使用 mqttFormatHostPort(host, port) 构建地址
- 影响范围:仅 MQTT 数据源的主 broker 地址构造逻辑
2026-08-06 16:47:51 +08:00
Syngnat
bdd84db52c 🐛 fix(data-sync): 修复跨库同步静默失败与数据安全问题
- 聚合表级失败并保留已确认提交计数,避免任务误报成功

- 绑定分析上下文与实际同步模式,阻止陈旧或无效配置执行

- 加固全量覆盖及同端点分页写入,补充跨库与失败回归测试

Refs #846
2026-08-05 23:55:44 +08:00
Syngnat
005113dd79 🐛 fix(redis): 修复列表新增与精确删除
- 对齐新版 Redis List 头尾新增的 Wails 参数契约

- 分别使用 LPUSH 与 RPUSH 保证插入位置语义

- 按索引原子删除并避免重复值误删

- 补充多语言文案与前后端回归测试

Refs #639
2026-08-05 22:33:53 +08:00
Syngnat
450b70178c 🐛 fix(oceanbase/dameng): 修复元数据连接与带点对象名解析
- OceanBase Oracle 元数据请求复用基础连接,避免 CURRENT_SCHEMA 初始化触发 EOF
- 达梦结果编辑保留带点 owner 边界,统一 SQL 预览与实际执行目标
- 完善限定名解析、补全导航与数据库回归测试

Refs #836
2026-08-05 16:24:02 +08:00
Syngnat
7ec66dc732 🐛 fix(query-editor/db): 修复运行中 SQL 无法停止
- 查询 ID 生成前支持终止执行,并统一刷新、翻页和 Mongo 多语句的取消代际
- 后端在连接建立和事务锁等待前登记取消,保留登记直到执行 owner 退出
- 使用 registration ID 防止旧任务清理同 ID 的新查询
- 补充前后端取消竞态与并发回归测试

Refs #754
2026-08-04 11:07:08 +08:00
Syngnat
53d0480058 🐛 fix(oracle): 修复触发器编辑误启用问题
- 移除 Oracle 元数据附带的 ALTER TRIGGER ENABLE 语句
- 保留触发器主体与 DISABLE 状态,避免禁用触发器被误启用
- 补充触发器状态语句回归测试

Fixes #825
2026-08-04 11:04:10 +08:00
Syngnat
f2e773efc5 🐛 fix(window): 修复 Windows 启动最大化显示不全
- 校验原生窗口状态与 WebView2 surface 覆盖率
- 在窗口线程刷新 WebView2 bounds,并为异步窗口命令增加状态屏障
- 完善工作区兜底和多显示器坐标转换
- 补充启动最大化、状态轮询及跨平台回归测试

Fixes #824
2026-08-03 23:26:15 +08:00
Syngnat
67981575a9 🐛 fix(nativewindow): 同步独立窗口主题与透明背景
- 同步主窗口解析后的自定义主题上下文,覆盖独立窗口主题变量和 Ant Design 令牌\n- 使用主题背景绘制 detached WebView,避免透明区域回退为白色\n- 按 macOS、Windows 和 Linux 配置原生窗口透明参数\n- 补充主题通信、覆盖层主题和原生窗口视觉选项回归测试
2026-08-03 15:27:30 +08:00
Syngnat
75f897c1ab 🐛 fix(query-editor): 修复 Cmd 点击失效表链接异常
- 表链接跳转前精确校验对象存在性并清理过期元数据
- 隔离标签、数据库及连接切换后的迟到响应并合并重复点击
- 扩展 Elasticsearch 与可选驱动代理的存在性检查及兼容回退
- 补充前后端回归测试和 Wails 绑定
2026-08-03 14:57:06 +08:00
Syngnat
3fe41f3700 feat(update): 将更新日志写入静态清单并打通 CI 生成
- 扩展 latest.json / UpdateInfo 支持 releaseNotes 字段
- latest 发版将 changelog 同步写入清单与 GitHub Release
- dev 构建按上一版基线自动生成相对更新日志
- 补充清单生成与后端映射测试
2026-08-02 13:07:26 +08:00
Syngnat
8446c4dfb6 feat(connection-package): 支持导出时多选连接
- 后端导出请求增加 connectionIds,仅打包所选连接
- 导出弹窗支持连接多选与未选校验
- 同步 Wails 绑定与传输测试
2026-08-02 12:42:05 +08:00
Syngnat
b80843483a feat(database): 支持通配符过滤数据库显示范围
- 新增数据库包含与排除通配规则,保持原精确筛选兼容
- 同步侧栏、查询编辑器、数据导入导出及连接配置
- 完善持久化、连接包、Wails 绑定、多语言与回归测试

Fixes #776
2026-08-02 00:06:20 +08:00
Syngnat
7dfe159b26 test(audit): 修复脱敏断言随机误报
- 将敏感信息检查限定到 SQL 文本和错误字段
- 避免审计 UUID、时间戳及哈希短串碰撞导致误报
2026-08-01 19:49:12 +08:00
Syngnat
2f7dad9579 Merge remote-tracking branch 'origin/dev' into dev 2026-08-01 19:40:18 +08:00
Syngnat
b5af396b4a 🐛 fix(oracle): 修复长触发器定义被截断
- 触发器元数据改走无界 CLOB/LONG 读取
- 查看与编辑入口统一使用完整触发器定义接口
- 补充超过 4 KiB 及旧标签页回归测试
2026-08-01 19:40:10 +08:00
Syngnat
c23878504d feat(db): 创建数据库支持选择字符集与排序规则
MySQL 系数据源(mysql/mariadb/diros/oceanbase 及归一化为 mysql 的
goldendb/greatdb)创建数据库时可指定字符集与排序规则,不再强制
utf8mb4;空值使用服务器默认。新增 ListDatabaseCharsets /
ListDatabaseCollations 查询 SHOW CHARACTER SET / SHOW COLLATION,
字符集/排序规则标识符仅允许字母数字下划线,防止注入。
2026-08-01 18:22:21 +08:00
Syngnat
198c58fcf3 🐛 fix(saved-queries): 缺失 SQL 文件的孤儿记录跳过加载,不再阻断退出/更新
saved_queries.json 引用的旧 .sql 文件缺失时(如用户手动删除,
或切换更新通道时迁移中断),此前 hydrateDiskFile 整体加载失败,
导致退出/更新流程弹出“检查未保存 SQL 失败,已取消退出”,更新无法进行。
现在孤儿记录被跳过并在迁移时清理,其余查询正常加载。
2026-08-01 18:22:21 +08:00
Syngnat
88434e77a9 feat(elasticsearch): 新增 REST 控制台并完善安全执行链
- 复用查询页提供 ES 控制台、模板、AI 辅助及原始与表格结果
- 新增统一解析分类、危险确认、连接保护和受控 REST 执行
- 扩展 driver agent、版本适配、Wails 绑定、多语言与文档
- 修复完整回归中发现的跨平台和前端基线用例问题

Refs #782
2026-08-01 14:58:12 +08:00
Syngnat
84dd276466 🐛 fix(driver-manager): 优化首次加载并修正版本与卡片展示
- 将驱动包元数据预热移至后台,避免状态首屏等待网络
- 复用状态快照并合并并发请求,防止重复刷新与过期响应覆盖
- 修正版本重复及历史版本选择,保证展示与安装目标一致
- 重排版本、进度和操作区域,并提升深色主操作对比度
- 补充首屏、并发、布局与性能边界回归测试
2026-07-31 23:48:27 +08:00
liuqiufeng
c259e2ebe2 feat(oracle): 支持 SID 连接模式
- 在连接弹窗中切换 Service Name 与 SID,并完善 URI 和参数回显
- 使用 SID 查询参数生成 Oracle DSN,兼容 Navicat 导入及历史配置
- 补充多语言、弹窗滚动布局和前后端回归测试
2026-07-31 22:02:11 +08:00
Syngnat
457a77d13a 🐛 fix(oracle): 修复视图 DDL 截断与 ROWID 注入问题
- 完整读取 Oracle DDL CLOB,避免元数据预览截断
- 统一对象设计器视图 DDL 获取和格式化
- 仅对物理表注入 ROWID,避免 ORA-01445
2026-07-30 23:20:03 +08:00
Syngnat
c4e7142309 🐛 fix(mac-window): 固定使用 macOS 原生窗口控制
- macOS 窗口创建时启用原生标题栏与红黄绿控制
- 移除主题切换及持久化偏好,兼容旧前端禁用调用
- 保持 Windows/Linux 自定义无边框窗口并补充回归测试
2026-07-30 21:06:12 +08:00
Syngnat
aec34a031a 🐛 fix(dameng): 修复表设计字段注释加载失败
增加 SYSCOLUMNCOMMENTS 原生字典降级查询,按字段名合并注释;原生字典无权限时保留基础元数据,并补充回归测试。
2026-07-30 20:44:12 +08:00
Syngnat
3ea3223749 🐛 fix(query-editor/logging): 修复达梦SQL美化并完善诊断日志
- 为达梦和自定义 DM8 连接启用 SQL 格式化位置占位符
- 记录 SQL 美化方言、作用域、耗时及脱敏错误信息
- 将 Wails 前端日志接入 GoNavi 应用日志文件
- 启动时输出应用版本及实际驱动模块和代理版本
- 补充达梦占位符、日志落盘与启动诊断回归测试
2026-07-30 18:17:08 +08:00
Syngnat
b293bf0da6 🐛 fix(sync/mysql): 修复批量导入占位符超限
- 识别 MySQL Prepared Statement 占位符超限错误
- 对被服务端拒绝的批量 INSERT 自动递归拆批重试
- 增加 24 列 1000 行数据同步回归测试
2026-07-30 17:41:01 +08:00
Syngnat
bf3f221857 🐛 fix(vastbase): 修复含点表名误识别为模式 (#757)
- 对含点号或双引号的 PostgreSQL-like 标识符进行可逆引用
- 让 Vastbase 表列表复用统一的 PostgreSQL 元数据解析
- 增加含点表名保持标识符边界的回归测试

Refs #757
2026-07-30 15:59:28 +08:00
Syngnat
b64c7e92d1 ️ perf(kingbase): 消除 SQL 查询周期性探活延迟
- 成功 SQL 往返后刷新缓存连接健康时间
- 避免活跃连接跨过旧时间边界时同步重复 Ping
- 保留空闲连接探活、失效清理与重建机制
- 新增 Kingbase 查询健康时间回归测试
2026-07-30 14:32:52 +08:00