FlyingZC commented on PR #40204:
URL: https://github.com/apache/shardingsphere/pull/40204#issuecomment-6211645661

   ### Result
   
   Review Result: Mergeable
   
   结论适用于公开 PR head 加本轮授权的本地未提交修复,限于 Code Correctness 
Review。当前候选没有阻塞问题或必须修改的建议;公开 PR 尚未包含本地修复,未查询或评估 GitHub CI/Actions。
   
   ### Evidence
   
   - 原 F1 已重新证实并在本地修复。修改前,四个新增 Parser IT fixture 全部失败,真实 parser/visitor 
入口也均遗漏下标参数;修改后全部通过。原结论没有被用作证明。
   - `PostgreSQLStatementVisitor.java:854` 先访问 INSERT 目标再访问来源;`:888` 访问完整 
`optIndirection`。这既收集多维下标与切片中的参数,也使 JDBC `?` 的 VALUES 编号接续目标参数。原生 `$2/$1` 
的乱序和重复引用保留原索引。
   - 实际改动精确限定为三个文件:
     - 
`parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java`
     - `test/it/parser/src/main/resources/sql/supported/dml/insert.xml`
     - `test/it/parser/src/main/resources/case/dml/insert.xml`
   - 新增四个参数化场景:原生 `$n` 与 JDBC `?` 各覆盖多维目标和切片,并与 VALUES 参数混合。expected AST 
断言总数、出现次数、列/值源码范围及 VALUES 索引;入口断言额外逐一核对目标参数的位置和访问顺序。
   - 使用当前编译的 PostgreSQL owner,并验证其为 runtime classpath 的首个来源。完整受影响用例 **54/54** 
通过,六个既有 INSERT 用例的 **11/11** 执行形式通过,完整参数标记断言 **4/4** 通过。最终回归退出码均为 **0**。
   - 没有公共签名、SPI、方言、模型或防御性分支变更。默认值、括号查询、集合查询、RETURNING、普通 INSERT、UPDATE、MERGE 和 
DO 的聚焦回归保持通过。
   
   ### Coverage
   
   **候选身份**
   
   - 类型:PR-backed local candidate;没有本地新增提交或暂存变更。
   - 最新公开 head 和本地 HEAD:`0873268c1d66591c88f5d3fc7cd6efad75c8b633`。
   - base/master 与 merge-base:`fec1f87710d658e43eac95815e223a5108341dff`。
   - 本地未提交 delta:3 文件,77 行新增、8 行删除;生产代码主要为 8 行顺序移动和 1 行遍历。
   - `git diff --binary HEAD` 
SHA256:`fc35ee7fc631c36e4ab5ac4fbaf3f844870eb9c6b7d940ca4c141f16d0d01a49`。
   - 全部候选文件内容清单 
SHA256:`48a6c7a70cf914c1493bd8d03b2c0ab31488f8f11e74970a1ae018153cb3e207`。
   - 开始与结束均经 GitHub 只读 API 核对。公开文件列表与完整候选 inventory 一致:**20 文件、46 
变更块**。两次公开提交和本地修复均纳入;公开普通评论、Review、行内评论均为空。
   
   **全部文件范围**
   
   `P = parser/sql/engine/dialect/postgresql`,`T = 
test/it/parser/src/main/resources`;花括号逐项展开。
   
   | 范围 | 已审查文件 | 数量 |
   |---|---|---:|
   | 语法与关键字 | 
`P/src/main/antlr4/imports/postgresql/{BaseRule,DMLStatement,PostgreSQLKeyword}.g4`
 | 3 |
   | 入口 | 
`P/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/PostgreSQLStatementParser.g4`
 | 1 |
   | 共享 visitor | 
`P/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java`
 | 1 |
   | DML visitor | 
`P/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java`
 | 1 |
   | expected AST | 
`T/case/dal/explain.xml`;`T/case/dml/{delete,do,insert,merge,select,update}.xml`
 | 7 |
   | SQL 注册 | 
`T/sql/supported/dal/explain.xml`;`T/sql/supported/dml/{delete,do,insert,merge,select,update}.xml`
 | 7 |
   
   **要求与完整审查**
   
   - 依据当前 
AGENTS、CODE_OF_CONDUCT、implementation/testing/non-regression/removal/verification、coding-standards、change-completion
 和 sql-parser-review。本轮全仓执行豁免仅适用于本任务,聚焦验证和格式检查没有豁免。
   - 接受边界为既有 PostgreSQL parser 的原生 SQL 和 AST/参数契约,没有扩大数据库或运行时支持承诺。核对 
[PostgreSQL 
INSERT](https://www.postgresql.org/docs/18/sql-insert.html)、[表达式下标](https://www.postgresql.org/docs/18/sql-expressions.html#SQL-EXPRESSIONS-SUBSCRIPTS)、UPDATE、DELETE、MERGE、DO、词法及类型文档,以及
 [devel INSERT](https://www.postgresql.org/docs/devel/sql-insert.html) 的 DO 
SELECT。
   - 核对仓库 SQL parser 开发文档、overview、SPI/visitor 注册及参数元数据/Proxy 消费路径;核对独立的 
openGauss grammar/visitor,未扩大修改范围。
   - 完整覆盖 INSERT 来源/目标/冲突选项、SET tuple/数组/字段、CURRENT OF、MERGE 
SOURCE/TARGET、DO、类型名及共享 RETURNING/EXPLAIN。
   - 每块重新完成根因与行为、影响与契约、测试与运行时三个视角,未继承旧覆盖状态。手工核对命名、集合契约、helper 顺序、换行、空值产生路径及 G4 
规范。
   - 无新增共享状态、依赖、发布产物或可信的既有路径复杂度增长,不需要性能基准。候选全部分类,最终收敛无新增独立问题,无未决的结论相关证据缺口。
   
   **实际验证**
   
   使用 managed `dbplus-engine-mvnw`、ShardingSphere native-wrapper 模式、JDK 21、项目 
Maven Wrapper 3.10.0。
   
   | 验证 | 命令/范围 | 退出码与结果 |
   |---|---|---|
   | 环境 | `dbplus-engine-mvnw --check` | 0 |
   | owner 编译 | `dbplus-engine-mvnw -B -ntp -pl 
parser/sql/engine/dialect/postgresql -DskipTests -Dspotless.skip=true 
-Dcheckstyle.skip=true compile` | 0 |
   | fixture/断言编译 | `dbplus-engine-mvnw -B -ntp -pl test/it/parser -DskipTests 
-Dspotless.skip=true -Dcheckstyle.skip=true compile dependency:build-classpath 
-Dmdep.outputFile=<external-classpath-file>` | 0 |
   | Parser IT 聚焦入口 | 原仓库 SQLCases、SQLStatementAssert,全部 54 个受影响 SQL ID | 0;54 
通过 |
   | 相邻 INSERT | 同一断言入口,6 个既有 ID | 0;11 个执行形式通过 |
   | 参数契约 | 实际 parser/visitor 入口,四个新 SQL 的全部标记 | 0;4 通过 |
   | runtime 身份 | 当前 PostgreSQL visitor 为 classpath 首个来源 | 0;PASS |
   | Spotless/Checkstyle | 下方精确过滤命令,两个适用 Java 文件 | 0;通过 |
   
   ~~~sh
   P=parser/sql/engine/dialect/postgresql
   J=org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement
   F1="$P/src/main/java/$J/PostgreSQLStatementVisitor.java"
   F2="$P/src/main/java/$J/type/PostgreSQLDMLStatementVisitor.java"
   S=$(python3 -c 'import os,re,sys; 
print(",".join(re.escape(os.path.abspath(x)) for x in sys.argv[1:]))' "$F1" 
"$F2")
   
C="$J/PostgreSQLStatementVisitor.java,$J/type/PostgreSQLDMLStatementVisitor.java"
   dbplus-engine-mvnw -B -ntp -pl "$P" "-DspotlessFiles=$S" 
"-Dcheckstyle.includes=$C" -Dcheckstyle.includeResources=false 
-Dcheckstyle.includeTestResources=false spotless:check checkstyle:check -Pcheck 
-T1
   ~~~
   
   Spotless 报告两个文件 clean:修改的共享 visitor 已实际检查,未修改的 DML visitor 
命中有效缓存,其源码、配置和工具输入未变化。Checkstyle result XML 恰好列出这两个文件,报告 0 violations。全部适用文件覆盖 
**2/2**。
   
   其余 4 个 G4、14 个资源 XML 对这两个 Maven 检查为 **Not Applicable**:Spotless 只配置 
Java/POM/指定 GitHub YAML;Checkstyle 默认源码过滤为 Java、资源过滤为 
`**/*.properties`,模块没有扩展覆盖这些文件。相关文件已人工审查。
   
   全仓 Unit/IT、SQL E2E 和服务验证按本轮授权明确豁免,未记为通过。未运行修改型 formatter。任务 delta 审计及 ledger 
完整覆盖/收敛验证通过;本轮精确 ledger 和自有临时输入已清理,保留自包含报告与证据。修复保持本地未提交状态,公开 PR 未更新。
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to