From f24d55fc9470f86ae6ca875b5c4488b5233a6f45 Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Fri, 2 Aug 2024 14:49:51 +0800 Subject: [PATCH] [fix](syntax) multi statements must delim with semicolon (#38670) (#38753) 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 35db2510c1..7b56e1479c 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 5773a9f29b..2bbcbc4290 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 4d1eae2196..bcab9956c1 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);