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.

Reply via email to