mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved oracle parameterize support, fix #3966
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
||||
package com.alibaba.druid.sql.dialect.oracle.visitor;
|
||||
|
||||
import com.alibaba.druid.DbType;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTParameterizedVisitor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OracleASTParameterizedVisitor extends SQLASTParameterizedVisitor implements OracleASTVisitor {
|
||||
public OracleASTParameterizedVisitor() {
|
||||
super(DbType.oracle);
|
||||
}
|
||||
|
||||
public OracleASTParameterizedVisitor(List<Object> parameters) {
|
||||
super(DbType.oracle, parameters);
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlParameterizedVisitor;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTParameterizedVisitor;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleParameterizedOutputVisitor;
|
||||
import com.alibaba.druid.sql.dialect.phoenix.visitor.PhoenixOutputVisitor;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGOutputVisitor;
|
||||
@@ -372,6 +373,11 @@ public class ParameterizedOutputVisitorUtils {
|
||||
MySqlParameterizedVisitor visitor = new MySqlParameterizedVisitor(outParameters);
|
||||
stmt.accept(visitor);
|
||||
return stmt;
|
||||
} else if (dbType == DbType.oracle) {
|
||||
SQLStatement stmt = SQLUtils.parseSingleStatement(sql, DbType.oracle);
|
||||
OracleASTParameterizedVisitor visitor = new OracleASTParameterizedVisitor(outParameters);
|
||||
stmt.accept(visitor);
|
||||
return stmt;
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
+14
@@ -47,4 +47,18 @@ public class MySqlParameterizedOutputVisitorTest_80 extends TestCase {
|
||||
"ORDER BY 1;", stmt.toString());
|
||||
}
|
||||
|
||||
public void test3() {
|
||||
|
||||
String sql = "/*test*/ select * from test ;";
|
||||
|
||||
assertEquals("/*test*/\n" +
|
||||
"SELECT *\n" +
|
||||
"FROM test;", ParameterizedOutputVisitorUtils.parameterizeOf(sql, DbType.mysql)
|
||||
.toString());
|
||||
|
||||
assertEquals("/*test*/\n" +
|
||||
"SELECT *\n" +
|
||||
"FROM test;", ParameterizedOutputVisitorUtils.parameterizeOf(sql, DbType.oracle)
|
||||
.toString());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user