From dc52c7eee166daf299b3ba1657ad0f8f6e3efd72 Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Fri, 2 Aug 2024 11:00:27 +0800 Subject: [PATCH] [fix](syntax) multi statements must delim with semicolon (#38670) pick from master #38670 --- .../main/antlr4/org/apache/doris/nereids/DorisParser.g4 | 2 +- .../apache/doris/nereids/parser/NereidsParserTest.java | 9 ++++++++- regression-test/suites/insert_p0/insert.groovy | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index 35db2510c116b8..7b56e1479c4089 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -26,7 +26,7 @@ options { tokenVocab = DorisLexer; } } multiStatements - : (statement SEMICOLON*)+ EOF + : statement (SEMICOLON+ statement)* SEMICOLON* EOF ; singleStatement diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java index 5773a9f29b5311..2bbcbc4290d105 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java @@ -54,11 +54,18 @@ public class NereidsParserTest extends ParserTestBase { @Test public void testParseMultiple() { NereidsParser nereidsParser = new NereidsParser(); - String sql = "SELECT b FROM test;SELECT a FROM test;"; + String sql = "SELECT b FROM test;;;;SELECT a FROM test;"; List> logicalPlanList = nereidsParser.parseMultiple(sql); Assertions.assertEquals(2, logicalPlanList.size()); } + @Test + public void testParseMultipleError() { + NereidsParser nereidsParser = new NereidsParser(); + String sql = "SELECT b FROM test SELECT a FROM test;"; + Assertions.assertThrowsExactly(ParseException.class, () -> nereidsParser.parseMultiple(sql)); + } + @Test public void testSingle() { NereidsParser nereidsParser = new NereidsParser(); diff --git a/regression-test/suites/insert_p0/insert.groovy b/regression-test/suites/insert_p0/insert.groovy index 4d1eae21962621..bcab9956c1d4ec 100644 --- a/regression-test/suites/insert_p0/insert.groovy +++ b/regression-test/suites/insert_p0/insert.groovy @@ -102,7 +102,7 @@ suite("insert") { partition p2 values[('50'), ('100')) ) distributed by hash(id) buckets 100 - properties('replication_num'='1') + properties('replication_num'='1'); insert into table_test_insert1 values(1), (50);