Skip to content

✨ feat(db): 新增 Apache Hive 数据源支持 - #1587

Merged
Syngnat merged 3 commits into
Syngnat:devfrom
lska367:feature/support-hive
Oct 27, 2026
Merged

Syngnat merged 3 commits into
Syngnat:devfrom
lska367:feature/support-hive

Conversation

@lska367

@lska367 lska367 commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

背景

补充大数据离线数仓场景下的 Apache Hive(HiveServer2 Thrift)数据源连接、元数据浏览与 SQL 查询支持。

改动

  • 新增基于 HiveServer2 Thrift 二进制协议(V10 / V11)的纯 Go 驱动及 optional-driver-agent 接入,支持 Hive 3.x / 4.x、SASL 认证、TLS / SSH 隧道、查询取消、库表/分区元数据与 DDL 获取。
  • 注册 hive.json 数据源描述表、sql-hive 能力契约,适配 SQL 导出的反引号标识符与转义规则。
  • 添加 Hive 图标、六种语言文案及生成的语言包,支持 hive:// 与 jdbc:hive2://(含分号参数)连接串解析及 Hive SQL 错误诊断。

验证

  • go test ./internal/db -run TestHive 与 go test -tags gonavi_hive_driver ./internal/db ./cmd/optional-driver-agent/... 通过。
  • go test ./shared/i18n ./internal/datasource/... 通过。
  • 前端 hive.test.ts 等相关 Vitest 测试通过。
  • Docker 真实 HiveServer2 4.0 环境连接、库表元数据读取与 SQL 查询验证通过。

影响与回滚

仅新增 hive 可选驱动与对应注册项,不影响既有数据源与连接配置;回滚本 PR 提交即可移除。

@Syngnat
Syngnat merged commit 35f9b62 into Syngnat:dev Oct 27, 2026
Syngnat added a commit that referenced this pull request Oct 27, 2026
- SQL 错误语义补充 Hive 编译期报错:ParseException、Table not found、
  Database does not exist、Invalid table alias or column reference。
- Hive 描述表接受 hs2 别名,连接表单与图标按同一 canonical 类型解析。
- 补充前端回归用例。

采纳 PR #1587 中与现有实现不重复的部分;该 PR 的独立 Thrift 驱动
与 dev 已合入的 d959e83 重复,未合并。

Co-authored-by: kamyang11111 <840064157@qq.com>
@Syngnat

Syngnat commented Oct 27, 2026

Copy link
Copy Markdown
Owner

感谢 @lska367 的贡献!🙏 这次和 dev 上已有的 Hive 实现撞车了,很抱歉。

Hive 驱动已经在 dev 的 d959e83 合入;这个 PR 从更早的 e76ac9d 起分支,独立实现的 HiveServer2 Thrift 驱动与现有版本重复,直接合并会出现两套 HiveDB,因此本次合并以现有驱动为准。

本 PR 中不重复的部分已经采纳并保留你的署名:

  • Hive ParseException / SemanticException 的错误语义:cannot recognize input near、Table not found、Database does not exist、Invalid table alias or column reference
  • hs2 连接别名
  • 对应回归用例

以上落在 8d3d80c,并保留 Co-authored-by。PR 已按 merge commit 合入 dev(35f9b62ad),你的 3 个提交保留在历史中。

欢迎基于最新 dev 继续提增量,例如参数绑定、Hive 4 / V11 特性;如果愿意,也可以先开 issue 对一下方向,避免再次大面积重复。

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.

2 participants