From 113ef65352755109f6950419353a8804d89f58d8 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 7 Aug 2013 15:01:22 +0800 Subject: [PATCH] improve sql parser --- .../druid/sql/parser/SQLExprParser.java | 48 +++++++++++++ .../alibaba/druid/sql/parser/SQLParser.java | 22 ++++++ .../druid/sql/parser/SQLStatementParser.java | 66 ++++++++++++++++- .../com/alibaba/druid/sql/parser/Token.java | 71 +++++++++++-------- .../benckmark/wall/WallBenchmarkTest1.java | 6 +- .../bvt/sql/mysql/MySqlGrantTest_11.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_12.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_13.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_14.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_15.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_16.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_17.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_18.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_19.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_20.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_21.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_22.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_23.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_24.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_25.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_26.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_27.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_28.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_29.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_30.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_31.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_32.java | 61 ++++++++++++++++ .../bvt/sql/mysql/MySqlGrantTest_33.java | 61 ++++++++++++++++ 28 files changed, 1581 insertions(+), 35 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_11.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_12.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_13.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_14.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_15.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_16.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_17.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_18.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_19.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_20.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_21.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_22.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_23.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_24.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_25.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_26.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_27.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_28.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_29.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_30.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_31.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_32.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_33.java 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 d7927b5078..b1f78566f6 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -257,6 +257,54 @@ public class SQLExprParser extends SQLParser { case WITH: case GRANT: case REPLACE: + case INDEX: + case MODEL: + case PCTFREE: + case INITRANS: + case MAXTRANS: + case SEGMENT: + case CREATION: + case IMMEDIATE: + case DEFERRED: + case STORAGE: + case NEXT: + case MINEXTENTS: + case MAXEXTENTS: + case MAXSIZE: + case PCTINCREASE: + case FLASH_CACHE: + case CELL_FLASH_CACHE: + case KEEP: + case NONE: + case LOB: + case STORE: + case ROW: + case CHUNK: + case CACHE: + case NOCACHE: + case LOGGING: + case NOCOMPRESS: + case KEEP_DUPLICATES: + case EXCEPTIONS: + case PURGE: + case FULL: + case TO: + case IDENTIFIED: + case PASSWORD: + case BINARY: + case WINDOW: + case OFFSET: + case SHARE: + case START: + case CONNECT: + case MATCHED: + case ERRORS: + case REJECT: + case UNLIMITED: + case BEGIN: + case EXCLUSIVE: + case MODE: + case ADVISE: sqlExpr = new SQLIdentifierExpr(lexer.stringVal()); lexer.nextToken(); break; diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java index 2d08493863..da4fca4e30 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java @@ -104,6 +104,28 @@ public class SQLParser { case ANALYZE: case OPTIMIZE: case GRANT: + case FULL: + case TO: + case NEW: + case INTERVAL: + case LOCK: + case LIMIT: + case IDENTIFIED: + case PASSWORD: + case BINARY: + case WINDOW: + case OFFSET: + case SHARE: + case START: + case CONNECT: + case MATCHED: + case ERRORS: + case REJECT: + case UNLIMITED: + case BEGIN: + case EXCLUSIVE: + case MODE: + case ADVISE: alias = lexer.stringVal(); lexer.nextToken(); return alias; diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java index 33ff09972a..8e67b0a4bf 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -350,6 +350,12 @@ public class SQLStatementParser extends SQLParser { } else if (lexer.token() == Token.INSERT) { privilege = "INSERT"; lexer.nextToken(); + } else if (lexer.token() == Token.INDEX) { + lexer.nextToken(); + privilege = "INDEX"; + } else if (lexer.token() == Token.TRIGGER) { + lexer.nextToken(); + privilege = "TRIGGER"; } else if (lexer.token() == Token.REFERENCES) { privilege = "REFERENCES"; lexer.nextToken(); @@ -362,6 +368,15 @@ public class SQLStatementParser extends SQLParser { } else if (lexer.token() == Token.SESSION) { privilege = "CREATE SESSION"; lexer.nextToken(); + } else if (lexer.token() == Token.TABLESPACE) { + privilege = "CREATE TABLESPACE"; + lexer.nextToken(); + } else if (lexer.token() == Token.USER) { + privilege = "CREATE USER"; + lexer.nextToken(); + } else if (lexer.token() == Token.VIEW) { + privilege = "CREATE VIEW"; + lexer.nextToken(); } else if (lexer.token() == Token.ANY) { lexer.nextToken(); @@ -381,6 +396,10 @@ public class SQLStatementParser extends SQLParser { } else if (identifierEquals("ROUTINE")) { privilege = "CREATE ROUTINE"; lexer.nextToken(); + } else if (identifierEquals("TEMPORARY")) { + lexer.nextToken(); + accept(Token.TABLE); + privilege = "CREATE TEMPORARY TABLE"; } else { throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal()); } @@ -430,7 +449,7 @@ public class SQLStatementParser extends SQLParser { throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal()); } } else { - throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal()); + privilege = "DROP"; } } else if (identifierEquals("USAGE")) { privilege = "USAGE"; @@ -454,6 +473,51 @@ public class SQLStatementParser extends SQLParser { lexer.nextToken(); acceptIdentifier("PRIVILEGES"); privilege = "INHERIT PRIVILEGES"; + } else if (identifierEquals("EVENT")) { + lexer.nextToken(); + privilege = "EVENT"; + } else if (identifierEquals("FILE")) { + lexer.nextToken(); + privilege = "FILE"; + } else if (lexer.token() == Token.GRANT) { + lexer.nextToken(); + acceptIdentifier("OPTION"); + privilege = "GRANT OPTION"; + } else if (lexer.token() == Token.LOCK) { + lexer.nextToken(); + acceptIdentifier("TABLES"); + privilege = "LOCK TABLES"; + } else if (identifierEquals("PROCESS")) { + lexer.nextToken(); + privilege = "PROCESS"; + } else if (identifierEquals("RELOAD")) { + lexer.nextToken(); + privilege = "RELOAD"; + } else if (identifierEquals("REPLICATION")) { + lexer.nextToken(); + if (identifierEquals("SLAVE")) { + lexer.nextToken(); + privilege = "REPLICATION SLAVE"; + } else { + acceptIdentifier("CLIENT"); + privilege = "REPLICATION CLIENT"; + } + } else if (lexer.token() == Token.SHOW) { + lexer.nextToken(); + + if (lexer.token() == Token.VIEW) { + lexer.nextToken(); + privilege = "SHOW VIEW"; + } else { + acceptIdentifier("DATABASES"); + privilege = "SHOW DATABASES"; + } + } else if (identifierEquals("SHUTDOWN")) { + lexer.nextToken(); + privilege = "SHUTDOWN"; + } else if (identifierEquals("SUPER")) { + lexer.nextToken(); + privilege = "SUPER"; } if (privilege != null) { diff --git a/src/main/java/com/alibaba/druid/sql/parser/Token.java b/src/main/java/com/alibaba/druid/sql/parser/Token.java index d7ba8db1ab..22f7ecaa40 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Token.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Token.java @@ -22,43 +22,55 @@ package com.alibaba.druid.sql.parser; * @formatter:off */ public enum Token { - EXPLAIN("EXPLAIN"), - FOR("FOR"), - IF("IF"), + SELECT("SELECT"), + DELETE("DELETE"), + INSERT("INSERT"), + UPDATE("UPDATE"), + + FROM("FROM"), + HAVING("HAVING"), + WHERE("WHERE"), + ORDER("ORDER"), + BY("BY"), + GROUP("GROUP"), + INTO("INTO"), + AS("AS"), + + CREATE("CREATE"), + ALTER("ALTER"), + DROP("DROP"), + SET("SET"), + + NULL("NULL"), + NOT("NOT"), + DISTINCT("DISTINCT"), + + TABLE("TABLE"), + TABLESPACE("TABLESPACE"), + VIEW("VIEW"), + SEQUENCE("SEQUENCE"), + TRIGGER("TRIGGER"), + USER("USER"), INDEX("INDEX"), + SESSION("SESSION"), + PROCEDURE("PROCEDURE"), + FUNCTION("FUNCTION"), + PRIMARY("PRIMARY"), KEY("KEY"), DEFAULT("DEFAULT"), CONSTRAINT("CONSTRAINT"), CHECK("CHECK"), - VIEW("VIEW"), - SEQUENCE("SEQUENCE"), - TRIGGER("TRIGGER"), - USER("USER"), - CREATE("CREATE"), - ALTER("ALTER"), - DROP("DROP"), - TABLE("TABLE"), - TABLESPACE("TABLESPACE"), - UPDATE("UPDATE"), - SET("SET"), - SELECT("SELECT"), - FROM("FROM"), - WHERE("WHERE"), - ORDER("ORDER"), - BY("BY"), - GROUP("GROUP"), - HAVING("HAVING"), - INSERT("INSERT"), - INTO("INTO"), - NULL("NULL"), - NOT("NOT"), - AS("AS"), - DELETE("DELETE"), - DISTINCT("DISTINCT"), UNIQUE("UNIQUE"), FOREIGN("FOREIGN"), REFERENCES("REFERENCES"), + + EXPLAIN("EXPLAIN"), + FOR("FOR"), + IF("IF"), + + + ALL("ALL"), UNION("UNION"), INTERSECT("INTERSECT"), @@ -160,9 +172,6 @@ public enum Token { MODE("MODE"), WAIT("WAIT"), ADVISE("ADVISE"), - SESSION("SESSION"), - PROCEDURE("PROCEDURE"), - FUNCTION("FUNCTION"), SYSDATE("SYSDATE"), DECLARE("DECLARE"), EXCEPTION("EXCEPTION"), diff --git a/src/test/java/com/alibaba/druid/benckmark/wall/WallBenchmarkTest1.java b/src/test/java/com/alibaba/druid/benckmark/wall/WallBenchmarkTest1.java index 77687b9030..0a98a3d165 100644 --- a/src/test/java/com/alibaba/druid/benckmark/wall/WallBenchmarkTest1.java +++ b/src/test/java/com/alibaba/druid/benckmark/wall/WallBenchmarkTest1.java @@ -18,17 +18,17 @@ package com.alibaba.druid.benckmark.wall; import junit.framework.TestCase; import com.alibaba.druid.wall.WallProvider; -import com.alibaba.druid.wall.spi.OracleWallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; public class WallBenchmarkTest1 extends TestCase { - WallProvider provider = new OracleWallProvider(); + WallProvider provider = new MySqlWallProvider(); public final static int COUNT = 1000 * 1000; public void test_0() throws Exception { String sql = "SELECT t1.department_id, t2.*\n" + // - "FROM hr_info t1, TABLE(t1.people) t2\n" + // + "FROM hr_info t1, x2 t2\n" + // "WHERE t2.department_id = t1.department_id"; for (int i = 0; i < 10; ++i) { provider.clearCache(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_11.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_11.java new file mode 100644 index 0000000000..eb7de6f920 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_11.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_11 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT CREATE TABLESPACE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT CREATE TABLESPACE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_12.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_12.java new file mode 100644 index 0000000000..dfd0df3250 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_12.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_12 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT CREATE TEMPORARY TABLE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT CREATE TEMPORARY TABLE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_13.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_13.java new file mode 100644 index 0000000000..9a255c2d53 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_13.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_13 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT CREATE USER ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT CREATE USER ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_14.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_14.java new file mode 100644 index 0000000000..f84bb56cb1 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_14.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_14 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT CREATE VIEW ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT CREATE VIEW ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_15.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_15.java new file mode 100644 index 0000000000..e4b0c953df --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_15.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_15 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT DELETE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT DELETE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_16.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_16.java new file mode 100644 index 0000000000..402a5763c9 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_16.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_16 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT DROP ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT DROP ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_17.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_17.java new file mode 100644 index 0000000000..174628ff55 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_17.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_17 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT EVENT ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT EVENT ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_18.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_18.java new file mode 100644 index 0000000000..8057678de0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_18.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_18 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT EXECUTE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT EXECUTE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_19.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_19.java new file mode 100644 index 0000000000..baffe54923 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_19.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_19 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT FILE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT FILE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_20.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_20.java new file mode 100644 index 0000000000..be8f316aa6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_20.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_20 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT GRANT OPTION ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT GRANT OPTION ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_21.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_21.java new file mode 100644 index 0000000000..c28ec54489 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_21.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_21 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT INDEX ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT INDEX ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_22.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_22.java new file mode 100644 index 0000000000..b222c6b860 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_22.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_22 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT LOCK TABLES ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT LOCK TABLES ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_23.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_23.java new file mode 100644 index 0000000000..915df7e986 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_23.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_23 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT PROXY ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT PROXY ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_24.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_24.java new file mode 100644 index 0000000000..b79b94d4c6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_24.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_24 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT PROCESS ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT PROCESS ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_25.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_25.java new file mode 100644 index 0000000000..cd8b9b04f5 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_25.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_25 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT REFERENCES ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT REFERENCES ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_26.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_26.java new file mode 100644 index 0000000000..8743dbeaa1 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_26.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_26 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT RELOAD ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT RELOAD ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_27.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_27.java new file mode 100644 index 0000000000..c2d3a7ab2b --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_27.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_27 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT REPLICATION CLIENT ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT REPLICATION CLIENT ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_28.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_28.java new file mode 100644 index 0000000000..2a104a0494 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_28.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_28 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT REPLICATION SLAVE ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT REPLICATION SLAVE ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_29.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_29.java new file mode 100644 index 0000000000..1faf377013 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_29.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_29 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT SHOW DATABASES ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT SHOW DATABASES ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_30.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_30.java new file mode 100644 index 0000000000..47e07112ea --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_30.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_30 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT SHOW VIEW ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT SHOW VIEW ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_31.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_31.java new file mode 100644 index 0000000000..d078681b18 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_31.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_31 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT SHUTDOWN ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT SHUTDOWN ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_32.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_32.java new file mode 100644 index 0000000000..d721e91650 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_32.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_32 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT SUPER ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT SUPER ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_33.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_33.java new file mode 100644 index 0000000000..f91832449d --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlGrantTest_33.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class MySqlGrantTest_33 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "GRANT TRIGGER ON mydb.* TO 'someuser'@'somehost';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + String output = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("GRANT TRIGGER ON mydb.* TO 'someuser'@'somehost'", // + output); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(0, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("City"))); +// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); + +// Assert.assertTrue(visitor.getColumns().contains(new Column("t2", "id"))); + } +}