[ 
https://issues.apache.org/jira/browse/DBUTILS-34?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672003#action_12672003
 ] 

Dan Fabulich commented on DBUTILS-34:
-------------------------------------

Julien's patch keeps an internal map of given keys to keys in lower case.  So 
you call put("Foo", value), and the lowerCaseMap maps "foo" to "Foo", and then 
the "real" HashMap stores ("Foo", value).

I'm concerned about this patch, because every change has to happen in two 
phases: first you update lowerCaseMap, and THEN you update the real map; I 
strongly suspect that it's not thread-safe as a result.  (I think the two maps 
can get out of sync, resulting in corruption.)

More generally, I don't understand the point of this bug.  Why do you need to 
retrieve the keys yourself?  Fabio originally wrote "I had to map the database 
fields to a bean and the 'case' made it impossible" ... but we already have a 
system for mapping database fields to bean properties.  It works fine (right?); 
it's clearly not "impossible."

> BasicRowProcessor loses any information on database field case
> --------------------------------------------------------------
>
>                 Key: DBUTILS-34
>                 URL: https://issues.apache.org/jira/browse/DBUTILS-34
>             Project: Commons DbUtils
>          Issue Type: Improvement
>    Affects Versions: 1.0
>            Reporter: Fabio Insaccanebbia
>            Priority: Minor
>         Attachments: BasicRowProcessor.java, BasicRowProcessor.patch
>
>
> In the BasicRowProcessor class there is a comment about the toMap method:
> " This  implementation returns a <code>Map</code> with case insensitive 
> column names as keys.  Calls to map.get("COL") and map.get("col") return the 
> same value"
> So the "contract" of this method just says that the "get" method is case 
> insensitive. The current implementation obtains this result by putting all 
> the keys in lowercase. This way we simply "lose" every information about the 
> case of the fields. If you call the "keys" iterator, you don't have anymore 
> the keys you inserted, but the "lowercase" version. 
> I find it not completely correct: I would expect the keys to be exactly the 
> ones I set on the database, also if I can get the value in a case insensitive 
> way.
> I still have to find the idea for a pathc, but I'd like to know if you find 
> my reasoning correct.
> I consider the current behaviour a problem, since I had to map the database 
> fields to a bean and the "case" made it impossible, even if I had set my 
> database to return mixed case fieldnames.

-- 
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