diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index 2328dca53c..d66c27af03 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -117,10 +117,6 @@ public class SQLUtils { return format(sql, JdbcUtils.ODPS); } - public static String formatSQLServer(String sql) { - return format(sql, JdbcUtils.SQL_SERVER); - } - public static String toOracleString(SQLObject sqlObject) { StringBuilder out = new StringBuilder(); sqlObject.accept(new OracleOutputVisitor(out, false)); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index 56b3f29809..db27a022b2 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -1994,15 +1994,10 @@ public class MySqlStatementParser extends SQLStatementParser { SQLInsertStatement.ValuesClause values = new SQLInsertStatement.ValuesClause(new ArrayList(0)); valueClauseList.add(values); } - + if (lexer.token() != Token.RPAREN) { throw new ParserException("syntax error"); } - - if (!parseCompleteValues && valueClauseList.size() >= parseValuesSize) { - lexer.skipToEOF(); - break; - } lexer.nextTokenComma(); if (lexer.token() == Token.COMMA) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java index ab0fc58e10..f85241aaca 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java @@ -123,11 +123,6 @@ public class SQLServerStatementParser extends SQLStatementParser { insertStatement.getValuesList().add(values); accept(Token.RPAREN); - if (!parseCompleteValues && insertStatement.getValuesList().size() >= parseValuesSize) { - lexer.skipToEOF(); - break; - } - if (lexer.token() == Token.COMMA) { lexer.nextToken(); continue; 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 7576eb8bd2..a8174a78eb 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Lexer.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Lexer.java @@ -1053,9 +1053,4 @@ public class Lexer { public boolean isHasComment() { return hasComment; } - - public void skipToEOF() { - pos = text.length(); - this.token = Token.EOF; - } } 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 93b2ded1f0..f971ee70d5 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -85,10 +85,6 @@ public class SQLStatementParser extends SQLParser { protected SQLExprParser exprParser; - protected boolean parseCompleteValues = true; - - protected int parseValuesSize = 3; - public SQLStatementParser(String sql){ this(new SQLExprParser(sql)); } @@ -1573,21 +1569,4 @@ public class SQLStatementParser extends SQLParser { accept(Token.RPAREN); return item; } - - - public boolean isParseCompleteValues() { - return parseCompleteValues; - } - - public void setParseCompleteValues(boolean parseCompleteValues) { - this.parseCompleteValues = parseCompleteValues; - } - - public int getParseValuesSize() { - return parseValuesSize; - } - - public void setParseValuesSize(int parseValuesSize) { - this.parseValuesSize = parseValuesSize; - } } diff --git a/src/main/java/com/alibaba/druid/wall/WallConfig.java b/src/main/java/com/alibaba/druid/wall/WallConfig.java index 87bf98a3f4..c6ddc04353 100644 --- a/src/main/java/com/alibaba/druid/wall/WallConfig.java +++ b/src/main/java/com/alibaba/druid/wall/WallConfig.java @@ -119,9 +119,6 @@ public class WallConfig implements WallConfigMBean { private boolean conditionOpBitwseAllow = true; private boolean caseConditionConstAllow = false; - - private boolean completeInsertValuesCheck = false; - private int insertValuesCheckSize = 3; public WallConfig(){ @@ -773,20 +770,4 @@ public class WallConfig implements WallConfigMBean { this.startTransactionAllow = startTransactionAllow; } - public boolean isCompleteInsertValuesCheck() { - return completeInsertValuesCheck; - } - - public void setCompleteInsertValuesCheck(boolean completeInsertValuesCheck) { - this.completeInsertValuesCheck = completeInsertValuesCheck; - } - - public int getInsertValuesCheckSize() { - return insertValuesCheckSize; - } - - public void setInsertValuesCheckSize(int insertValuesCheckSize) { - this.insertValuesCheckSize = insertValuesCheckSize; - } - } diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index cb7cc29194..4b3f648d8b 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -611,11 +611,7 @@ public abstract class WallProvider { if (!config.isCommentAllow()) { parser.getLexer().setAllowComment(false); // deny comment } - if (!config.isCompleteInsertValuesCheck()) { - parser.setParseCompleteValues(false); - parser.setParseValuesSize(config.getInsertValuesCheckSize()); - } - + parser.parseStatementList(statementList); final Token lastToken = parser.getLexer().token(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlInsertTest_10.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlInsertTest_10.java deleted file mode 100644 index 7a12ca5217..0000000000 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlInsertTest_10.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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.ast.statement.MySqlInsertStatement; -import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; - -public class MySqlInsertTest_10 extends MysqlTest { - - public void test_parseCompleteValues_false() throws Exception { - String sql = "insert into t(a,b) values ('a1','b1'),('a2','b2'),('a3','b3'),('a4','b4');"; - - MySqlStatementParser parser = new MySqlStatementParser(sql); - parser.setParseCompleteValues(false); - parser.setParseValuesSize(3); - List statementList = parser.parseStatementList(); - SQLStatement stmt = statementList.get(0); - - MySqlInsertStatement insertStmt = (MySqlInsertStatement) stmt; - - Assert.assertEquals(3, insertStmt.getValuesList().size()); - Assert.assertEquals(2, insertStmt.getValues().getValues().size()); - Assert.assertEquals(2, insertStmt.getColumns().size()); - Assert.assertEquals(1, statementList.size()); - - MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); - stmt.accept(visitor); - - String formatSql = "INSERT INTO t (a, b)"// - + "\nVALUES ('a1', 'b1'),"// - + "\n\t('a2', 'b2'),"// - + "\n\t('a3', 'b3')"; - Assert.assertEquals(formatSql, SQLUtils.toMySqlString(insertStmt)); - } - - public void test_parseCompleteValues_true() throws Exception { - String sql = "insert into t(a,b) values ('a1','b1'),('a2','b2'),('a3','b3'),('a4','b4');"; - - MySqlStatementParser parser = new MySqlStatementParser(sql); - parser.setParseCompleteValues(true); - List statementList = parser.parseStatementList(); - SQLStatement stmt = statementList.get(0); - - MySqlInsertStatement insertStmt = (MySqlInsertStatement) stmt; - - Assert.assertEquals(4, insertStmt.getValuesList().size()); - Assert.assertEquals(2, insertStmt.getValues().getValues().size()); - Assert.assertEquals(2, insertStmt.getColumns().size()); - Assert.assertEquals(1, statementList.size()); - - MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); - stmt.accept(visitor); - - String formatSql = "INSERT INTO t (a, b)"// - + "\nVALUES ('a1', 'b1'),"// - + "\n\t('a2', 'b2'),"// - + "\n\t('a3', 'b3'),"// - + "\n\t('a4', 'b4')"; - Assert.assertEquals(formatSql, SQLUtils.toMySqlString(insertStmt)); - } -} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java deleted file mode 100644 index d92ff6824b..0000000000 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.sqlserver; - -import java.util.List; - -import junit.framework.TestCase; - -import org.junit.Assert; - -import com.alibaba.druid.sql.SQLUtils; -import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerInsertStatement; -import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; -import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerSchemaStatVisitor; - -public class SQLServerInsertTest5 extends TestCase { - - public void test_parseCompleteValues_false() throws Exception { - String sql = "insert into t(a,b) values ('a1','b1'),('a2','b2'),('a3','b3'),('a4','b4');"; - - SQLServerStatementParser parser = new SQLServerStatementParser(sql); - parser.setParseCompleteValues(false); - parser.setParseValuesSize(3); - List statementList = parser.parseStatementList(); - SQLStatement stmt = statementList.get(0); - - SQLServerInsertStatement insertStmt = (SQLServerInsertStatement) stmt; - - Assert.assertEquals(3, insertStmt.getValuesList().size()); - Assert.assertEquals(2, insertStmt.getValues().getValues().size()); - Assert.assertEquals(2, insertStmt.getColumns().size()); - Assert.assertEquals(1, statementList.size()); - - SQLServerSchemaStatVisitor visitor = new SQLServerSchemaStatVisitor(); - stmt.accept(visitor); - - String formatSql = "INSERT INTO t"// - + "\n\t(a, b)"// - + "\nVALUES" + "\n('a1', 'b1'),"// - + "\n('a2', 'b2'),"// - + "\n('a3', 'b3')"; - Assert.assertEquals(formatSql, SQLUtils.toSQLServerString(insertStmt)); - } - - public void test_parseCompleteValues_true() throws Exception { - String sql = "insert into t(a,b) values ('a1','b1'),('a2','b2'),('a3','b3'),('a4','b4');"; - - SQLServerStatementParser parser = new SQLServerStatementParser(sql); - parser.setParseCompleteValues(true); - List statementList = parser.parseStatementList(); - SQLStatement stmt = statementList.get(0); - - SQLServerInsertStatement insertStmt = (SQLServerInsertStatement) stmt; - - Assert.assertEquals(4, insertStmt.getValuesList().size()); - Assert.assertEquals(2, insertStmt.getValues().getValues().size()); - Assert.assertEquals(2, insertStmt.getColumns().size()); - Assert.assertEquals(1, statementList.size()); - - SQLServerSchemaStatVisitor visitor = new SQLServerSchemaStatVisitor(); - stmt.accept(visitor); - - String formatSql = "INSERT INTO t"// - + "\n\t(a, b)"// - + "\nVALUES"// - + "\n('a1', 'b1'),"// - + "\n('a2', 'b2'),"// - + "\n('a3', 'b3'),"// - + "\n('a4', 'b4')"; - Assert.assertEquals(formatSql, SQLUtils.toSQLServerString(insertStmt)); - } -}