Skip to content

fix(crud): 修复QueryAnalyzerImpl中SQL解析逻辑问题并优化查询语法处理#351

Draft
zhou-hao wants to merge 1 commit into
5.0.xfrom
refactor-jsqlparser
Draft

fix(crud): 修复QueryAnalyzerImpl中SQL解析逻辑问题并优化查询语法处理#351
zhou-hao wants to merge 1 commit into
5.0.xfrom
refactor-jsqlparser

Conversation

@zhou-hao

@zhou-hao zhou-hao commented May 7, 2026

Copy link
Copy Markdown
Member

目的

  • 适配 JSqlParser 5.3 的 AST 与 Visitor 接口变化,修复 QueryAnalyzerImpl 在 SQL 解析链路中的兼容性问题。
  • 优化复杂查询语法的解析与重写逻辑,降低升级后在子查询、WITHVALUES 等场景下的回归风险。
  • 当前整体任务仍在继续,先提交 draft PR 供提前审阅。

核心变动

  • hsweb-commons-crud:升级 jsqlparser5.3,并通过 maven-shade-pluginnet.sf.jsqlparser relocate 到 org.hswebframework.web.crud.shaded.jsqlparser,降低依赖冲突风险。
  • QueryAnalyzerImpl:适配 JSqlParser 5.x 的泛型 Visitor API,补齐 ParenthesedSelectParenthesedFromItemLateralSubSelectFromQueryValuesTableFunction 等结构的处理。
  • QueryAnalyzerImpl:增加 <=> 操作符占位解析与回填逻辑,避免解析阶段因 JSqlParser 不支持该操作符而直接失败。
  • 测试:补充执行前数据清理,回归验证 SQL 重写后的可执行性。

测试结果

  • 命令:mvn -pl hsweb-commons/hsweb-commons-crud -am -Dtest=DefaultQueryHelperTest,QueryAnalyzerImplTest -Dsurefire.failIfNoSpecifiedTests=false test jacoco:report
  • 单元测试:64 passed, 0 failed, 0 skipped
    • DefaultQueryHelperTest: 10 passed
    • QueryAnalyzerImplTest: 54 passed
  • 覆盖率(hsweb-commons-crud 模块):line 52.72% (2133/4046), branch 48.31% (686/1420)
  • 关键类覆盖率:QueryAnalyzerImpl line 77.78% (287/369), branch 68.95% (131/190)

风险与说明

  • 当前分支相对 5.0.x 仍落后 3 个提交,后续继续开发前会再同步主线。
  • 目前验证集中在 hsweb-commons-crud 相关测试,尚未覆盖外部项目对 shaded jsqlparser 依赖的联调场景。
  • 测试过程中存在 H2 readOnly 级别 warning,但本次用例全部通过,未阻塞本 PR。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant