From 962e16534e6de16fa6102241512fdd339daf28e4 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Mon, 14 Nov 2022 16:44:02 +0800 Subject: [PATCH] improved sql parser --- core/src/main/java/com/alibaba/druid/sql/parser/Lexer.java | 4 ++-- .../java/com/alibaba/druid/bvt/sql/odps/OdpsLexerTest.java | 2 +- .../java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest37.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/alibaba/druid/sql/parser/Lexer.java b/core/src/main/java/com/alibaba/druid/sql/parser/Lexer.java index 74a76e8f85..f38ce8bba9 100644 --- a/core/src/main/java/com/alibaba/druid/sql/parser/Lexer.java +++ b/core/src/main/java/com/alibaba/druid/sql/parser/Lexer.java @@ -2272,7 +2272,7 @@ public class Lexer { boolean ident = false; for (; ; ) { ch = charAt(++pos); - if (isEOF() || ch == ';' || ch == ';') { + if (isEOF() || ch == ';' || ch == ';' || ch == '\r' || ch == '\n') { pos--; bufPos--; break; @@ -2318,7 +2318,7 @@ public class Lexer { this.ch = charAt(pos); if (dbType == DbType.odps && !isWhitespace(endChar)) { - while (isIdentifierChar(this.ch) && ch != ';') { + while (isIdentifierChar(this.ch) && ch != ';' && ch != ';') { ++pos; bufPos++; this.ch = charAt(pos); diff --git a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsLexerTest.java b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsLexerTest.java index 5b0ca11934..5ae89b6b99 100644 --- a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsLexerTest.java +++ b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsLexerTest.java @@ -46,7 +46,7 @@ public class OdpsLexerTest extends TestCase { lexer.nextToken(); assertEquals(Token.IDENTIFIER, lexer.token()); lexer.nextToken(); - assertEquals(Token.IDENTIFIER, lexer.token()); + assertEquals(Token.VARIANT, lexer.token()); assertEquals("@{yyyyMMdd}_${rundt}", lexer.stringVal()); } diff --git a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest37.java b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest37.java index 02a9b0cb13..758226c9ca 100644 --- a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest37.java +++ b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest37.java @@ -29,11 +29,11 @@ public class OdpsSelectTest37 extends TestCase { String sql = "-- abc\u001A" + "\nselect * from t"; - assertEquals("-- abc\n" + + assertEquals("-- abc\u001A\n" + "SELECT *\n" + "FROM t", SQLUtils.formatOdps(sql)); - assertEquals("-- abc\n" + + assertEquals("-- abc\u001A\n" + "select *\n" + "from t", SQLUtils.formatOdps(sql, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION));