From 9ada3931a9b495de411062ca2e33eceb430e55fc Mon Sep 17 00:00:00 2001 From: xuzifu666 <1206332514@qq.com> Date: Thu, 16 Jul 2026 11:24:05 +0800 Subject: [PATCH] Test case for [CALCITE-5216] Cannot parse parenthesized nested WITH clause --- core/src/test/resources/sql/sub-query.iq | 12 ++++++++++++ .../org/apache/calcite/sql/parser/SqlParserTest.java | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/core/src/test/resources/sql/sub-query.iq b/core/src/test/resources/sql/sub-query.iq index 84f9aa5183f5..daa85b96538b 100644 --- a/core/src/test/resources/sql/sub-query.iq +++ b/core/src/test/resources/sql/sub-query.iq @@ -937,6 +937,18 @@ where sal + 100 not in ( !ok !} +# [CALCITE-5216] Cannot parse parenthesized nested WITH clause +# This sql program was validated in PostgreSQL +with a as (with b as (select 1)(select 1)) select * from a; ++--------+ +| EXPR$0 | ++--------+ +| 1 | ++--------+ +(1 row) + +!ok + # [CALCITE-356] AssertionError while translating query with WITH and correlated sub-query !if (use_old_decorr) { with t (a, b) as (select * from (values (1, 2))) diff --git a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java index bb7566c9904c..9e9a971b5d90 100644 --- a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java +++ b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java @@ -2858,6 +2858,16 @@ void checkPeriodPredicate(Checker checker) { sql(sql).ok(expected); } + /** Test case for + * [CALCITE-5216] + * Cannot parse parenthesized nested WITH clause. */ + @Test void testNestedWithParenthesized() { + final String sql = "with a as (with b as (select 1)(select 1)) select * from a"; + final String expected = "WITH `A` AS (WITH `B` AS (SELECT 1) SELECT 1) SELECT *\n" + + "FROM `A`"; + sql(sql).ok(expected); + } + /** Test case for * [CALCITE-5252] * JDBC adapter sometimes miss parentheses around SELECT in WITH_ITEM body. */