Samuel Minne ([EMAIL PROTECTED]) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
prepareStatement.executeUpdate(deleteQuery) returns 1 even  when no data deleted.

Long Description
With a delete query, prepareStatement.executeUpdate() should return the number of 
deleted rows.
It returns 1 even when no data were deleted by the query.
The prepareStatement.getUpdateCount() returns -1 before the call to executeUpdate(), 
and 1 after.
This problem was found by my regression test program, which insert its own data on 
tables. The same program works with mysql and mm jdbc driver.
I think the problem come from the jdbc driver.

Sample Code
    public synchronized boolean removeLink(Element doc,Integer tagId) 
            throws SQLException, ElementNotSupportedException {
        boolean linkRemoved=true;
        if ( doc.getType() != Element.DOCUMENT) throw new 
ElementNotSupportedException();
        Document myDocument= (Document)doc;

        // Suppression du lien existant
        StringBuffer query=new StringBuffer();
        query.append("delete from lien_sequence");
        query.append(" where doc_id=?" );
        query.append(" and tag_id=?" );
//System.out.println("Docid "+myDocument.id + ": Tag "+tagId.intValue());

        Connection con= 
myConnectionPoolManager.requestConnection(myUpdateConnectionPool);       
        PreparedStatement myPreparedStatement= con.prepareStatement(query.toString());
        myPreparedStatement.setInt(1,myDocument.id);
        myPreparedStatement.setObject(2,tagId); // Gère la valeur NULL de l'Integer
//System.out.println("Query "+query.toString());

        if (myPreparedStatement.executeUpdate() != 1) linkRemoved= false;
//System.out.println("updatecount=" +myPreparedStatement.getUpdateCount());        
//System.out.println("updatecount=" +myPreparedStatement.executeUpdate());        
//System.out.println("updatecount=" +myPreparedStatement.getUpdateCount());        
//System.exit(-1);
        myConnectionPoolManager.closeStatement(myPreparedStatement);
        myConnectionPoolManager.returnConnection(myUpdateConnectionPool,con);
//System.out.println("Docid "+myDocument.id + ": Tag "+tagId.intValue());
//System.out.println("Result "+linkRemoved);

        return linkRemoved;
    }

No file was uploaded with this report

Reply via email to