refactor StatFilter buildSlowParameters

This commit is contained in:
wenshao
2012-08-23 08:33:36 +08:00
parent 31e4abd71f
commit f38a6c6c95
5 changed files with 245 additions and 6 deletions
@@ -460,7 +460,7 @@ public abstract class FilterEventAdapter extends FilterAdapter {
try {
statementExecuteQueryBefore(statement, statement.getSql());
ResultSetProxy resultSet = super.preparedStatement_executeQuery(chain, statement);
ResultSetProxy resultSet = chain.preparedStatement_executeQuery(statement);
statementExecuteQueryAfter(statement, statement.getSql(), resultSet);
@@ -526,10 +526,10 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
out.writeObject(value);
} else if (value instanceof InputStream) {
out.writeString("<InputStream>");
} else if (value instanceof Clob) {
out.writeString("<Clob>");
} else if (value instanceof NClob) {
out.writeString("<NClob>");
} else if (value instanceof Clob) {
out.writeString("<Clob>");
} else if (value instanceof Blob) {
out.writeString("<Blob>");
} else {
@@ -45,7 +45,7 @@ public class MockPreparedStatement extends PreparedStatementBase implements Mock
MockConnection conn = getConnection();
if (conn != null && conn.getDriver() != null) {
return getConnection().getDriver().createResultSet(this);
return conn.getDriver().executeQuery(this, sql);
}
if (conn != null) {
@@ -6,6 +6,9 @@ import java.sql.Timestamp;
import java.sql.Types;
import java.util.List;
import org.apache.derby.iapi.types.SQLVarchar;
import com.alibaba.druid.mock.MockPreparedStatement;
import com.alibaba.druid.mock.MockResultSet;
import com.alibaba.druid.mock.MockResultSetMetaData;
import com.alibaba.druid.mock.MockStatementBase;
@@ -19,6 +22,7 @@ import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
@@ -138,9 +142,17 @@ public class MySqlMockExecuteHandlerImpl implements MockExecuteHandler {
} else {
throw new SQLException("TODO");
}
} else if (expr instanceof SQLVariantRefExpr) {
SQLVariantRefExpr varExpr = (SQLVariantRefExpr) expr;
int varIndex = varExpr.getIndex();
if (statement instanceof MockPreparedStatement) {
MockPreparedStatement mockPstmt = (MockPreparedStatement) statement;
row[i] = mockPstmt.getParameters().get(varIndex);
} else {
row[i] = null;
}
} else {
throw new SQLException("TODO");
row[i] = null;
}
metaData.getColumns().add(column);