You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "Jason Huynh (JIRA)" <ji...@apache.org> on 2016/12/07 22:22:58 UTC

[jira] [Resolved] (GEODE-2002) The index is not used on a query with a where clause containing a parameterized key on a map

     [ https://issues.apache.org/jira/browse/GEODE-2002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jason Huynh resolved GEODE-2002.
--------------------------------
       Resolution: Duplicate
    Fix Version/s: 1.1.0

> The index is not used on a query with a where clause containing a parameterized key on a map
> --------------------------------------------------------------------------------------------
>
>                 Key: GEODE-2002
>                 URL: https://issues.apache.org/jira/browse/GEODE-2002
>             Project: Geode
>          Issue Type: Bug
>          Components: querying
>            Reporter: Barry Oglesby
>             Fix For: 1.1.0
>
>
> This is the same as GEM-1026.
> If an index is defined like:
> {noformat}
> <index name="instrumentTLAltIdIndex" from-clause="/instrument i, i.tradingLines tl" expression="tl.alternateReferences['SEDOL', 'INHOUSE_SEDOL']"/> 
> {noformat}
> And a query is defined like:
> {noformat}
> <trace> select i from from /instrument i, i.tradingLines t where t.alternateReferences[$1]='BFNY8K9' with bind parameter 'SEDOL'.
> {noformat}
> Then, the {{instrumentTLAltIdIndex}} index won't be used when the query is executed.
> The message logged in the server log looks like (with {{indexesUsed(0)}} instead of {{indexesUsed(1)}}):
> {noformat}
> [info 2016/10/14 14:51:03.069 PDT  <ServerConnection on port 57074 Thread 2> tid=0x3e] Query Executed in 3.645424 ms; rowCount = 14; indexesUsed(0) "<trace> select i from /instrument i, i.tradingLines t where t.alternateReferences[$1]='BFNY8K9'"
> {noformat}
> The {{CompiledIndexOperation generateCanonicalizedExpression}} method returns {{index_iter2.alternateReferences\[$1\]}} instead of {{index_iter2.alternateReferences\['INHOUSE_SEDOL'\]}}, and the {{AbstractMapIndex isMatchingWithIndexExpression}} method fails to match the index.
> The {{$1}} is generated by CompiledBindArgument generateCanonicalizedExpression.
> Also, note that the trace logging is incorrect on any query using a map index.
> The static query is defined like:
> {noformat}
> <trace> select i from from /instrument i, i.tradingLines t where t.alternateReferences['SEDOL']='BFNY8K9'
> {noformat}
> This logs a message in the server log like:
> {noformat}
> [info 2016/10/14 14:29:58.145 PDT  <ServerConnection on port 56969 Thread 1> tid=0x3c] Query Executed in 54.36587 ms; rowCount = 16; indexesUsed(1):instrumentTLAltIdIndex-SEDOL(Results: 0) "<trace> select i from /instrument i, i.tradingLines t where t.alternateReferences['SEDOL']='BFNY8K9'"
> {noformat}
> The {{Results: 0}} part of the message is wrong. It should be {{Results: 16}}.
> The {{IndexTrackingQueryObserver beforeIndexLookup}} method saves the {{IndexInfo}} at {{key=instrumentTLAltIdIndex-SEDOL}}, but the {{afterIndexLookup}} method attempts to retrieve it using {{key=instrumentTLAltIdIndex}}. The {{IndexInfo}} is not found, so its results are not updated.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)