From 00379bef50e59e29a034923610309927c6573b9d Mon Sep 17 00:00:00 2001 From: Jiangshan <59380643+Jiangshan0406@users.noreply.github.com> Date: Wed, 7 Sep 2022 19:04:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPG=E4=B8=ADcollate=E5=90=8E?= =?UTF-8?q?=E5=87=BA=E7=8E=B0.=E5=AF=BC=E8=87=B4=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=8Cissue?= =?UTF-8?q?=EF=BC=9Ahttps://github.com/alibaba/druid/issues/4375?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../druid/sql/parser/SQLExprParser.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index 923bd7b3d7..090f988310 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -4542,12 +4542,24 @@ public class SQLExprParser extends SQLParser { if (lexer.token == Token.LITERAL_ALIAS || lexer.token == Token.IDENTIFIER || lexer.token == Token.LITERAL_CHARS) { - charType.setCollate(lexer.stringVal()); + StringBuilder collate = new StringBuilder(lexer.stringVal()); + lexer.nextToken(); + if (lexer.token == Token.DOT){ + lexer.nextToken(); + if (lexer.token == Token.LITERAL_ALIAS + || lexer.token == Token.IDENTIFIER + || lexer.token == Token.LITERAL_CHARS){ + collate.append(".").append(lexer.stringVal()); + lexer.nextToken(); + + } else { + throw new ParserException(lexer.info()); + } + } + charType.setCollate(collate.toString()); } else { throw new ParserException(lexer.info()); } - - lexer.nextToken(); } return charType;