I will start looking at this. I volunteer ;-)
~ Shreyas
Satheesh Bandaram wrote:
Looks like this bug has all the information needed to reproduce and to generate a patch. Is there any interest to submit a patch for this relatively easy fix? A complete patch would include a fix, along the general idea provided here and a test case added to jdbcapi test suite. Good opportunity for anyone wanting to get started modifying Derby code. Any volunteers? :-)
I am willing to help, if needed.
Satheesh
Mamta A. Satoor (JIRA) wrote:
[ http://issues.apache.org/jira/browse/DERBY-229?page=comments#action_63128 ]
Mamta A. Satoor commented on DERBY-229:
---------------------------------------
The getter [updater] methods with column names (in EmbedResultSet.java) use the protected method findColumnName(String columnName) to determine the column index for the passed column name. And the loop for the lookup starts from the end towards the beginning of the ResultDescription and that seems to be the problem behind the current behavior. ResultDescription rd = resultDescription;
// 1 or 0 based? assume 1 (probably wrong) for (int i=rd.getColumnCount(); i>=1; i--) {
String name = rd.getColumnDescriptor(i).getName(); if (StringUtil.SQLEqualsIgnoreCase(columnName, name)) { return i; } }
Column names on ResultSet.updateXXX and getXXX methods are handled incorrectly ------------------------------------------------------------------------------
Key: DERBY-229 URL: http://issues.apache.org/jira/browse/DERBY-229 Project: Derby Type: Bug Components: JDBC Versions: 10.1.0.0, 10.0.2.1 Reporter: Daniel John Debrunner Attachments: x.java
Sections 14.2.3 and [14.2.3] of JDBC 3.0 spec say
Column names supplied to getter [updater] methods are case insensitive. If a select list
contains the same column more than once, the first instance of the column will be
returned [updated].
Derby returns or updates the last column in the select list, not the first. With the attached Java class I see
PRE-UPDATE
1,100
POST-UPDATE
1,500
POST-UPDATE getXXX(name)
AB:500,ab500
