From 7e6857313b0994a5020246a11c10867c19308018 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Wed, 10 Aug 2022 10:56:13 +0800 Subject: [PATCH] improved opds sql support --- src/main/java/com/alibaba/druid/sql/parser/Lexer.java | 4 ++-- .../com/alibaba/druid/sql/parser/SQLParserUtils.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/parser/Lexer.java b/src/main/java/com/alibaba/druid/sql/parser/Lexer.java index 8505a8b395..98728455ae 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Lexer.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Lexer.java @@ -2255,7 +2255,7 @@ public class Lexer { boolean ident = false; for (; ; ) { ch = charAt(++pos); - if (isEOF()) { + if (isEOF() || ch == ';' || ch == ';') { pos--; bufPos--; break; @@ -2287,7 +2287,7 @@ public class Lexer { this.ch = charAt(pos); if (dbType == DbType.odps) { - while (isIdentifierChar(this.ch)) { + while (isIdentifierChar(this.ch) && ch != ';') { ++pos; bufPos++; this.ch = charAt(pos); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLParserUtils.java b/src/main/java/com/alibaba/druid/sql/parser/SQLParserUtils.java index 4aa671aa98..0c7e7b5d88 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLParserUtils.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLParserUtils.java @@ -517,6 +517,17 @@ public class SQLParserUtils { if (lexer.identifierEquals("pai") || lexer.identifierEquals("jar")) { return Collections.singletonList(sql); } + + if (dbType == DbType.odps) { + switch (lexer.token) { + case IF: + case VARIANT: + case WHILE: + return Collections.singletonList(sql); + default: + break; + } + } } List list = new ArrayList();