mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved wall filter oracle support, support locktable fix #4292
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
|
||||
public interface SQLLockTableStatement extends SQLStatement {
|
||||
}
|
||||
+2
-1
@@ -19,13 +19,14 @@ import com.alibaba.druid.sql.ast.SQLCommentHint;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLLockTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MySqlLockTableStatement extends MySqlStatementImpl {
|
||||
public class MySqlLockTableStatement extends MySqlStatementImpl implements SQLLockTableStatement {
|
||||
|
||||
private List<Item> items = new ArrayList<Item>();
|
||||
|
||||
|
||||
+2
-1
@@ -19,12 +19,13 @@ import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLLockTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OracleLockTableStatement extends OracleStatementImpl {
|
||||
public class OracleLockTableStatement extends OracleStatementImpl implements SQLLockTableStatement {
|
||||
|
||||
private SQLExprTableSource table;
|
||||
private LockMode lockMode;
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOutFileExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.*;
|
||||
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExecuteImmediateStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleLockTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerExecStatement;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerInsertStatement;
|
||||
@@ -2636,7 +2637,7 @@ public class WallVisitorUtils {
|
||||
allow = config.isHintAllow();
|
||||
denyMessage = "hint not allow";
|
||||
errorCode = ErrorCode.HINT_NOT_ALLOW;
|
||||
} else if (x instanceof MySqlLockTableStatement) {
|
||||
} else if (x instanceof SQLLockTableStatement) {
|
||||
allow = config.isLockTableAllow();
|
||||
denyMessage = "lock table not allow";
|
||||
errorCode = ErrorCode.LOCK_TABLE_NOT_ALLOW;
|
||||
|
||||
@@ -38,4 +38,11 @@ public class OracleWallTest7 extends TestCase {
|
||||
|
||||
assertTrue(WallUtils.isValidateOracle(sql));
|
||||
}
|
||||
|
||||
public void test_lock() throws Exception {
|
||||
String sql = //
|
||||
"LOCK TABLE \"SFXT\".\"FLYWAY_SCHEMA_HISTORY\" IN EXCLUSIVE MODE";
|
||||
|
||||
assertTrue(WallUtils.isValidateOracle(sql));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user