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

Parametrized statements model enhancement (hack actually).

MockData script generate fix.
上级 e53e5332
......@@ -25,4 +25,10 @@ public interface DBCParameterizedStatement extends DBCStatement
String getFormattedQuery();
/**
* Forces parameters save (for script generation).
* Parameters save can be disabled due to performance reasons
*/
void forceParametersSave(boolean force);
}
......@@ -142,6 +142,9 @@ public abstract class ExecuteBatchImpl implements DBSDataManipulator.ExecuteBatc
}
if (statement == null || !reuse) {
statement = prepareStatement(session, rowValues);
if (actions != null && statement instanceof DBCParameterizedStatement) {
((DBCParameterizedStatement) statement).forceParametersSave(true);
}
statistics.setQueryText(statement.getQueryString());
statistics.addStatementsCount();
}
......
......@@ -52,6 +52,7 @@ public class JDBCPreparedStatementImpl extends JDBCStatementImpl<PreparedStateme
private static final Object NULL_VALUE = new Object();
private Map<Object, Object> paramMap;
private boolean forceParametersSave;
protected static class ContentParameter {
String displayString;
......@@ -147,6 +148,11 @@ public class JDBCPreparedStatementImpl extends JDBCStatementImpl<PreparedStateme
}
}
@Override
public void forceParametersSave(boolean force) {
this.forceParametersSave = force;
}
@NotNull
private String formatParameterValue(Object value) {
if (value instanceof CharSequence) {
......@@ -174,7 +180,7 @@ public class JDBCPreparedStatementImpl extends JDBCStatementImpl<PreparedStateme
protected void handleStatementBind(Object parameter, @Nullable Object o)
{
if (isQMLoggingEnabled()) {
if (forceParametersSave || isQMLoggingEnabled()) {
// Save parameters
if (o == null) {
o = NULL_VALUE;
......@@ -187,7 +193,9 @@ public class JDBCPreparedStatementImpl extends JDBCStatementImpl<PreparedStateme
}
paramMap.put(parameter, o);
}
QMUtils.getDefaultHandler().handleStatementBind(this, parameter, o);
if (isQMLoggingEnabled()) {
QMUtils.getDefaultHandler().handleStatementBind(this, parameter, o);
}
}
////////////////////////////////////////////////////////////////////
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册