Skip to content

fix(crud): 统一查询分析器列名解析#359

Merged
zhou-hao merged 3 commits into
hs-web:5.0.xfrom
zhou-ai-bot:codex/fix-query-analyzer-column-lookup
Jul 16, 2026
Merged

fix(crud): 统一查询分析器列名解析#359
zhou-hao merged 3 commits into
hs-web:5.0.xfrom
zhou-ai-bot:codex/fix-query-analyzer-column-lookup

Conversation

@zhou-ai-bot

@zhou-ai-bot zhou-ai-bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

目的

  • 修复动态过滤条件使用 camelCase 属性名时被 QueryAnalyzer 判定为未定义列的问题
  • 将列名兼容逻辑收敛到统一获取入口,避免聚合等调用方各自改写 QueryParam

核心变动

  • hsweb-commons-crud:QueryAnalyzerImpl.findColumn 精确匹配失败后回退到 snake_case
  • 过滤条件构造器及内部列获取统一复用 findColumn,保留精确别名优先级
  • CTE/子查询条件列按当前查询 table alias 构造全名,避免复用真实表元数据缓存时生成错误 owner
  • 补充 r2dbc-postgresql test-scope 依赖,并在查询分析器测试间清理共享 H2 数据
  • 增加普通、嵌套、带表别名、精确别名优先、未知列拒绝和 CTE owner 缓存回归测试

设计与测试目标

  • 设计稿:不适用;单点框架缺陷修复,不调整接口、数据结构或模块边界
  • 用户确认:已确认,要求在 QueryAnalyzer 构造/获取列阶段统一处理
  • 测试目标:覆盖 camelCase 正常路径、嵌套条件、限定列名、别名冲突、未知列异常、CTE 元数据缓存和测试顺序隔离
  • 注释 / 公共契约:适用;公共接口签名未变化,已在精确匹配优先和 CTE owner 缓存分支补充兼容语义注释
  • 数据权限:不适用;未涉及 CRUD 资产权限或数据范围
  • 数据库兼容与性能:适用;列名转换不引入方言 SQL,CTE 列全名复用现有 Dialect 构造能力;已在 H2 框架测试和 PostgreSQL 聚合集成场景验证
  • 链路追踪:不适用;纯内存列映射,无业务链路或外部 I/O
  • MBean 运维可观测性:不适用;未新增常驻任务、缓存、队列或后台执行器

测试结果

  • 命令:JAVA_HOME=<JDK17> PATH=<JDK17>/bin:$PATH ./mvnw test -q -pl "$(./changes.sh)"
  • 新增/更新测试:QueryAnalyzerImplTest 覆盖 camelCase、嵌套限定列名、精确别名优先、未知列拒绝、CTE owner 缓存与测试数据隔离
  • 单元测试:89 passed, 0 failed, 1 skipped;其中 QueryAnalyzerImplTest 60 passed
  • 集成测试:JetLinks AggregationQueryHelperImplTest 15 passed, 0 failed, 0 skipped;原始 alarmTime -> alarm_time 场景 1 passed
  • 压力测试:不适用;每次列解析仅增加一次字符串转换和一次 HashMap 查询,CTE 列名继续复用现有方言构造
  • 覆盖率:QueryAnalyzerImpl line 86.8%, branch 74.7%

文档同步情况

  • 已同步:无需更新长期文档,行为约束由实现注释和回归测试承载
  • 未同步:无
  • 说明:README 长期总览未变化;测试证据放在 PR / CI,未新增独立任务流水文档

风险与说明

  • 影响范围:QueryAnalyzer 动态条件、排序等统一列查找入口,以及 CTE/子查询条件列全名生成
  • 注释 / 公共契约:接口签名未变化,已补精确别名优先和 CTE owner 缓存说明
  • 链路追踪 / 可观测性:不涉及业务链路或外部 I/O
  • MBean / 运维可观测性:不涉及常驻内存能力
  • 未覆盖场景:未进行大规模并发压测;数据库行为以 H2 框架测试和 JetLinks PostgreSQL 聚合集成测试为证据
  • 已知限制:无

@zhou-hao
zhou-hao merged commit d927ec6 into hs-web:5.0.x Jul 16, 2026
2 checks passed
@zhou-ai-bot
zhou-ai-bot deleted the codex/fix-query-analyzer-column-lookup branch July 16, 2026 06:30
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