[CONJ-574] Connector misses Columns when using a turkish locale Created: 2018-01-29  Updated: 2019-02-18  Resolved: 2018-01-31

Status: Closed
Project: MariaDB Connector/J
Component/s: metadata
Affects Version/s: 2.2.1
Fix Version/s: 2.2.2, 1.7.2

Type: Bug Priority: Major
Reporter: Thorsten Goetzke Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

Introduction:
Some languages have special casing rules, most notoriously the turkish language.
Example:

"ID".loLowerCase(); // "id"
Locale.setDefault(new Locale("tr")) // turkish client
"ID".toLowerCase(); // "ıd" note the dottles i

To get language independent casing one has to use something like this
"ID".toLowerCase(Locale.ROOT)

Connector Issue:
ColoumnNameMap#getIndex uses getLowerCase().
That means turkish people will not be able to access Coloumns like "ID", because mariaDb incorrectly maps them internally to "ıd" instead of "id".

Workarounds: Dont use the letter i in your coloums or don't have turkish customers. So actually not really.

Sugested fix: replace all Usages of toLowerCase() with toLowerCase(Locale.Root). Same technique applies to toUpperCase()



 Comments   
Comment by Diego Dupin [ 2018-01-29 ]

right ! this has been added in next corrective release

Generated at Thu Feb 08 03:16:45 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.