[ https://issues.apache.org/jira/browse/IGNITE-5361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031494#comment-16031494 ]
Alexander Paschenko commented on IGNITE-5361: --------------------------------------------- I've done a bit of research, and it looks like we need to: # allow setting additional SQL related metadata in {{QueryEntity}} (per field) - most likely it will be a new map, much like {{keyFields}} # create tables inside Ignite with respect to that metadata # enhance {{GridH2RowDescriptor}} interface to make it capable of providing additional data about expected field values to client code # enhance our {{H2RowDescriptor#wrap}} and {{DmlStatementsProcessor#convert}} routines responsible for turning user given stuff to what H2 actually expects (essentially type conversions logic) All of this will ultimately let us do correct index lookups on {{get}} as Andrey described above, and correct, previously loaded value will be returned as a result, instead of putting new gibberish into cache. > Query for string field represented as CHAR SQL type in underlying database > doesn't retrieve entires that were loaded with CacheJdbcPojoStore > -------------------------------------------------------------------------------------------------------------------------------------------- > > Key: IGNITE-5361 > URL: https://issues.apache.org/jira/browse/IGNITE-5361 > Project: Ignite > Issue Type: Bug > Affects Versions: 1.7 > Reporter: Andrey Gura > > Use case: > There is database where primary key has type {{CHAR(N)}} (not {{VARCHAR}}). > In this case string that have length less than {{N}} will be spaces padded. > Data has loaded into Ignite cache using {{CacheJdbcPojoStore}}. As result > string field contains trailing spaces. The following SQL query wont retrieve > expected value in case when string parameter doesn't contain trailing spaces: > {noformat} > select * from MyTable where id = 'some_value_without_trailing spaces' > {noformat} > Moreover, if {{readThrough}} is enabled, and {{cache.get()}} operation will > be invoked, and string identifier in key contains the same value without > trailing spaces the entry will be loaded from underlying database. As result > cache will contain two values with differents keys (one of them with trailing > spaces while other without trailing spaces). > Looks like usability bug. -- This message was sent by Atlassian JIRA (v6.3.15#6346)