提交 6ceccaab 编写于 作者: S serge-rider

#2422 Oracle explain plan: bind parameters (NULL varchar?)

上级 102022bb
...@@ -17,16 +17,20 @@ ...@@ -17,16 +17,20 @@
package org.jkiss.dbeaver.ext.oracle.model.plan; package org.jkiss.dbeaver.ext.oracle.model.plan;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource; import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource;
import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.exec.plan.DBCPlan; import org.jkiss.dbeaver.model.exec.plan.DBCPlan;
import org.jkiss.dbeaver.runtime.jobs.InvalidateJob;
import org.jkiss.utils.IntKeyMap; import org.jkiss.utils.IntKeyMap;
import org.jkiss.utils.SecurityUtils; import org.jkiss.utils.SecurityUtils;
import java.sql.ParameterMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -36,6 +40,8 @@ import java.util.List; ...@@ -36,6 +40,8 @@ import java.util.List;
*/ */
public class OraclePlanAnalyser implements DBCPlan { public class OraclePlanAnalyser implements DBCPlan {
private static final Log log = Log.getLog(OraclePlanAnalyser.class);
private OracleDataSource dataSource; private OracleDataSource dataSource;
private JDBCSession session; private JDBCSession session;
private String query; private String query;
...@@ -104,6 +110,17 @@ public class OraclePlanAnalyser implements DBCPlan { ...@@ -104,6 +110,17 @@ public class OraclePlanAnalyser implements DBCPlan {
// Explain plan // Explain plan
dbStat = session.prepareStatement(planQuery); dbStat = session.prepareStatement(planQuery);
try { try {
try {
// Bind parameters if any
ParameterMetaData parameterMetaData = dbStat.getParameterMetaData();
if (parameterMetaData != null && parameterMetaData.getParameterCount() > 0) {
for (int i = 0; i < parameterMetaData.getParameterCount(); i++) {
dbStat.setNull(i + 1, Types.VARCHAR);
}
}
} catch (Exception e) {
log.error(e);
}
dbStat.execute(); dbStat.execute();
} finally { } finally {
dbStat.close(); dbStat.close();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册