From 64ffb6b6f4feeb61fdc752cd297f54414c8a1df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Fri, 11 Mar 2016 11:50:38 +0800 Subject: [PATCH] mysql sql parser support unicode alias --- .../druid/sql/dialect/mysql/parser/MySqlLexer.java | 2 +- .../druid/bvt/sql/schemaStat/SchemaStatTest.java | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java index b9f266abb6..f6244c205d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java @@ -537,7 +537,7 @@ public class MySqlLexer extends Lexer { if (c <= identifierFlags.length) { return identifierFlags[c]; } - return false; + return c != ' ' && c != ','; } public void scanNumber() { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java b/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java index 8c1a355862..facae89ff8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java @@ -2,11 +2,12 @@ package com.alibaba.druid.bvt.sql.schemaStat; import org.junit.Assert; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser; -import com.alibaba.druid.sql.dialect.odps.visitor.OdpsSchemaStatVisitor; +import com.alibaba.druid.sql.parser.SQLParserUtils; import com.alibaba.druid.sql.parser.SQLStatementParser; import com.alibaba.druid.sql.visitor.SchemaStatVisitor; +import com.alibaba.druid.util.JdbcConstants; import junit.framework.TestCase; @@ -17,10 +18,12 @@ public class SchemaStatTest extends TestCase { + " from alisec_app.adl_tb_wing_rubbish_laidian_new_reason_realname_fdt " + " order by 来电日期 desc limit 30;"; - SQLStatementParser parser = new OdpsStatementParser(sql); + + String dbType = JdbcConstants.ODPS; + SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); SQLStatement stmt = parser.parseStatementList().get(0); - SchemaStatVisitor statVisitor = new OdpsSchemaStatVisitor(); + SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType); stmt.accept(statVisitor); System.out.println(statVisitor.getColumns());