From 15d14ab0b9dcadf649768b3bde4601ca5b2a945d Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Thu, 18 Apr 2024 17:13:19 +0700 Subject: [PATCH] fix: `ALTER ...` shall `captureRest()` only to the next statement terminator - fixes #1993 Signed-off-by: Andreas Reichel --- build.gradle | 6 +++--- .../jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 2 +- .../jsqlparser/statement/UnsupportedStatementTest.java | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 022f843a3..f158a7269 100644 --- a/build.gradle +++ b/build.gradle @@ -463,7 +463,7 @@ xslt { } tasks.register('sphinx', Exec) { - dependsOn(gitChangelogTask, renderRR, xslt, updateKeywords, xmldoc) + dependsOn(gitChangelogTask, renderRR, xslt, xmldoc) String PROLOG = """ .. |_| unicode:: U+00A0 @@ -504,7 +504,7 @@ tasks.register('sphinx', Exec) { } publish { - dependsOn(check, gitChangelogTask, renderRR, xslt, updateKeywords, xmldoc) + dependsOn(check, gitChangelogTask, renderRR, xslt, xmldoc) } publishing { @@ -615,5 +615,5 @@ tasks.register('upload') { } } } -upload.dependsOn(check, assemble, gitChangelogTask, renderRR, xslt, updateKeywords, xmldoc) +upload.dependsOn(check, assemble, gitChangelogTask, renderRR, xslt, xmldoc) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index d9d5ff4ed..040958169 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -7574,7 +7574,7 @@ List captureRest() { while(true) { tok = getToken(1); int l = tokens.size(); - if( tok.kind == EOF ) { + if( tok.kind == EOF || tok.kind == ST_SEMICOLON ) { break; } else if ( l>0 && ( tok.image.equals(".") || tokens.get(l-1).endsWith(".")) ) { tokens.set(l-1, tokens.get(l-1) + tok.image); diff --git a/src/test/java/net/sf/jsqlparser/statement/UnsupportedStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/UnsupportedStatementTest.java index e2b72d9cd..02fd16c5c 100644 --- a/src/test/java/net/sf/jsqlparser/statement/UnsupportedStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/UnsupportedStatementTest.java @@ -105,6 +105,15 @@ public void execute() throws Throwable { }); } + @Test + public void testCaptureRestIssue1993() throws JSQLParserException { + String sqlStr = "Select 1; ALTER TABLE \"inter\".\"inter_user_rec\" \n" + + " OWNER TO \"postgres\"; select 2; select 3;"; + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr, + parser -> parser.withErrorRecovery(false)); + Assertions.assertEquals(4, statements.size()); + } + @Test void testAlter() throws JSQLParserException { String sqlStr =