diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java index 37ebc25377..a8b2da68b5 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java @@ -41,37 +41,37 @@ public class MySqlSelectParser extends SQLSelectParser { @Override protected final String as() throws ParserException { - String rtnValue = null; + String alias = null; if (lexer.token() == Token.AS) { lexer.nextToken(); if (lexer.token() == Token.LITERAL_ALIAS) { - rtnValue = lexer.stringVal(); + alias = '"' + lexer.stringVal() + '"'; lexer.nextToken(); - return rtnValue; + return alias; } if (lexer.token() == Token.IDENTIFIER) { - rtnValue = lexer.stringVal(); + alias = lexer.stringVal(); lexer.nextToken(); - return rtnValue; + return alias; } throw new ParserException("Error", 0, 0); } if (lexer.token() == Token.LITERAL_ALIAS) { - rtnValue = lexer.stringVal(); + alias = '"' + lexer.stringVal() + '"'; lexer.nextToken(); } else if (lexer.token() == Token.IDENTIFIER) { - rtnValue = lexer.stringVal(); + alias = lexer.stringVal(); lexer.nextToken(); } else if (lexer.token() == Token.LITERAL_CHARS) { - rtnValue = "'" + lexer.stringVal() + "'"; + alias = "'" + lexer.stringVal() + "'"; lexer.nextToken(); } - return rtnValue; + return alias; } @Override diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/parser/MySqlParserResourceTest.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/parser/MySqlParserResourceTest.java index 213877d54e..c7ad6f6c40 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/parser/MySqlParserResourceTest.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/parser/MySqlParserResourceTest.java @@ -16,14 +16,14 @@ import com.alibaba.druid.util.JdbcUtils; public class MySqlParserResourceTest extends TestCase { public void test_0() throws Exception { -// exec_test("bvt/parser/mysql-0.txt"); -// exec_test("bvt/parser/mysql-1.txt"); -// exec_test("bvt/parser/mysql-2.txt"); -// exec_test("bvt/parser/mysql-3.txt"); -// exec_test("bvt/parser/mysql-4.txt"); -// exec_test("bvt/parser/mysql-5.txt"); -// exec_test("bvt/parser/mysql-6.txt"); -// exec_test("bvt/parser/mysql-7.txt"); + exec_test("bvt/parser/mysql-0.txt"); + exec_test("bvt/parser/mysql-1.txt"); + exec_test("bvt/parser/mysql-2.txt"); + exec_test("bvt/parser/mysql-3.txt"); + exec_test("bvt/parser/mysql-4.txt"); + exec_test("bvt/parser/mysql-5.txt"); + exec_test("bvt/parser/mysql-6.txt"); + exec_test("bvt/parser/mysql-7.txt"); exec_test("bvt/parser/mysql-8.txt"); } diff --git a/src/test/resources/bvt/parser/mysql-0.txt b/src/test/resources/bvt/parser/mysql-0.txt index ac604f220a..e5f69a32ed 100644 --- a/src/test/resources/bvt/parser/mysql-0.txt +++ b/src/test/resources/bvt/parser/mysql-0.txt @@ -6,7 +6,7 @@ ON a.panel_id = c.panel_id WHERE b.user_id = ? and ((b.is_grid='y' and c.param_name='is_hidden' and c.param_value='false') or b.is_grid != 'y') ORDER BY a.col ASC, a.position ASC --------------------------- -SELECT DISTINCT a.id AS id, a.col AS col, a.position AS position, a.panel_id AS panel_id +SELECT DISTINCT a.id AS "id", a.col AS "col", a.position AS "position", a.panel_id AS "panelId" FROM view_position_info a LEFT JOIN view_portal b ON a.panel_id = b.panel_id LEFT JOIN view_portal_panel c ON a.panel_id = c.panel_id WHERE b.user_id = ? AND (b.is_grid = 'y' AND c.param_name = 'is_hidden' AND c.param_value = 'false' OR b.is_grid != 'y') -ORDER BY a.col ASC, a.position ASC \ No newline at end of file +ORDER BY a.col ASC, a.position ASC \ No newline at end of file diff --git a/src/test/resources/bvt/parser/mysql-1.txt b/src/test/resources/bvt/parser/mysql-1.txt index 48599d8a7c..58b3f2bbc8 100644 --- a/src/test/resources/bvt/parser/mysql-1.txt +++ b/src/test/resources/bvt/parser/mysql-1.txt @@ -7,7 +7,7 @@ ORDER BY sequence desc LIMIT ?, ? --------------------------- -SELECT id, item_type AS 'itemType', item_id AS 'itemId', item_name AS 'itemName', app_id AS 'appId', sequence, refresh_intv AS refresh_intv +SELECT id, item_type AS 'itemType', item_id AS 'itemId', item_name AS 'itemName', app_id AS 'appId', sequence, refresh_intv AS "refreshIntv" FROM view_portal_info WHERE 1 = 1 AND item_type = ? AND app_id = ? ORDER BY sequence DESC diff --git a/src/test/resources/bvt/parser/mysql-2.txt b/src/test/resources/bvt/parser/mysql-2.txt index 86cc049ecc..c08f69a09a 100644 --- a/src/test/resources/bvt/parser/mysql-2.txt +++ b/src/test/resources/bvt/parser/mysql-2.txt @@ -4,6 +4,6 @@ FROM sys_user LIMIT ?, ? --------------------------- - SELECT id AS id, username AS username, password AS password, name AS name, staff_num AS staff_num, wangwang AS wangwang, email AS email, mobile AS mobile, is_deleted AS is_deleted, is_admin AS is_admin, gmt_create AS gmt_create +SELECT id AS "id", username AS "username", password AS "password", name AS "name", staff_num AS "staffNumber", wangwang AS "wangwang", email AS "email", mobile AS "mobile", is_deleted AS "isDeleted", is_admin AS "isAdmin", gmt_create AS "gmtCreate" FROM sys_user LIMIT ?, ? \ No newline at end of file