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
Copy link
Copy Markdown
Member

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

目的

  • 适配 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant