From d44e4f8001c3a19d06a285de34909753155e87b6 Mon Sep 17 00:00:00 2001 From: Cong Hu Date: Thu, 30 May 2024 17:31:21 +0800 Subject: [PATCH] Optimize CTE in parser. (#31447) --- .../parser/mysql/visitor/statement/MySQLStatementVisitor.java | 2 +- .../sql/parser/sql/common/segment/generic/WithSegment.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java index 606e739b61fdd..87037742473ca 100644 --- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java +++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java @@ -745,7 +745,7 @@ public ASTNode visitWithClause(final WithClauseContext ctx) { for (CteClauseContext each : ctx.cteClause()) { commonTableExpressions.add((CommonTableExpressionSegment) visit(each)); } - return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions); + return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions, null != ctx.RECURSIVE()); } @SuppressWarnings("unchecked") diff --git a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/WithSegment.java b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/WithSegment.java index cadeea4f1688a..c2adaaf3c9b9d 100644 --- a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/WithSegment.java +++ b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/WithSegment.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sql.parser.sql.common.segment.generic; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment; @@ -27,6 +28,7 @@ /** * With segment. */ +@AllArgsConstructor @RequiredArgsConstructor @Getter public final class WithSegment implements SQLSegment { @@ -36,4 +38,6 @@ public final class WithSegment implements SQLSegment { private final int stopIndex; private final Collection commonTableExpressions; + + private boolean recursive; }