Bug when add two same length and hashCode SQLs to a batch executor
-------------------------------------------------------------------
Key: IBATIS-497
URL: https://issues.apache.org/jira/browse/IBATIS-497
Project: iBatis for Java
Issue Type: Bug
Components: SQL Maps
Reporter: Dingguo Wu
Priority: Critical
When I use batch execute, I found some SQL didn't execute sometime. I debuged
and found a bug at
com.ibatis.sqlmap.engine.execution.SqlExecutor$Batch.addBatch.
When two SQL strings have same length and same hashCode ,this bug happens.
Unfortunately, It happened to me . Does anybody believe that "B6" and "AU"
have same hashCode? That is problem.
the code :
public void addBatch(RequestScope request, Connection conn, String sql,
Object[] parameters) throws SQLException {
PreparedStatement ps = null;
if (currentSql != null && sql.hashCode() == currentSql.hashCode() &&
sql.length() == currentSql.length()) {
int last = statementList.size() - 1;
ps = (PreparedStatement) statementList.get(last);
} else {
ps = conn.prepareStatement(sql);
setStatementTimeout(request.getStatement(), ps);
currentSql = sql;
statementList.add(ps);
batchResultList.add(new BatchResult(request.getStatement().getId(),
sql));
}
request.getParameterMap().setParameters(request, ps, parameters);
ps.addBatch();
size++;
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.