From 22f8d8d710c9a528d55ed05410ef78a6468355d4 Mon Sep 17 00:00:00 2001 From: dengliming Date: Thu, 5 Mar 2026 00:10:44 +0800 Subject: [PATCH] feat: support EXPLAIN for DML and simplify ExplainStatement - parse EXPLAIN with SELECT/INSERT/UPDATE/DELETE/MERGE (including WITH) - unify ExplainStatement target to Statement (remove Select-only API) - add regression tests for EXPLAIN DELETE/UPDATE/INSERT --- .../statement/ExplainStatement.java | 47 ++++++++++--------- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 16 +++++-- .../sf/jsqlparser/statement/ExplainTest.java | 36 +++++++++++++- 3 files changed, 73 insertions(+), 26 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/statement/ExplainStatement.java b/src/main/java/net/sf/jsqlparser/statement/ExplainStatement.java index 048356425..544aedf67 100644 --- a/src/main/java/net/sf/jsqlparser/statement/ExplainStatement.java +++ b/src/main/java/net/sf/jsqlparser/statement/ExplainStatement.java @@ -13,16 +13,14 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; - import net.sf.jsqlparser.schema.Table; -import net.sf.jsqlparser.statement.select.Select; /** * An {@code EXPLAIN} statement */ public class ExplainStatement implements Statement { private String keyword; - private Select select; + private Statement statement; private LinkedHashMap options; private Table table; @@ -37,24 +35,17 @@ public ExplainStatement() { public ExplainStatement(String keyword, Table table) { this.keyword = keyword; this.table = table; - this.select = null; } - public ExplainStatement(String keyword, Select select, List