Skip to content

增强 runtime join on 动态条件的防护 - #2

Open
weiqinghang wants to merge 1 commit into
bobdeng:mainfrom
weiqinghang:codex/join-on-runtime-hardening
Open

weiqinghang wants to merge 1 commit into
bobdeng:mainfrom
weiqinghang:codex/join-on-runtime-hardening

Conversation

@weiqinghang

Copy link
Copy Markdown
Contributor

变更说明

这个 PR 是对已合并的 join-on scoped DSL 功能做一轮小范围 hardening,主要补 runtime 动态传入场景下的防护,不引入新的 DSL 语义。

本次补充的防护

  • DSLQuery.joinOn(path, dsl)path 做格式校验,非法路径直接 fail fast
  • 对 runtime joinOn 的路径做命中校验,避免条件挂到不存在的 join 路径上时静默失效
  • 对 join-on DSL 增加输入边界保护:
    • 最大长度 2048
    • 最大嵌套深度 10

设计原则

  • 只加防护,不扩能力
  • 保持现有 scoped DSL 语义不变
  • 保持正常使用场景的 SQL 生成结果不变
  • 对错误输入优先 fail fast,而不是静默忽略

测试

新增覆盖以下场景:

  • 非法 runtime join-on path
  • runtime join-on path 未命中实际 join
  • join-on DSL 嵌套过深
  • join-on DSL 过长

验证

已执行:

gradle -I /tmp/gradle8-jacoco-compat.init.gradle test

结果:

  • BUILD SUCCESSFUL

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