[ 
https://issues.apache.org/jira/browse/CALCITE-2415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16608440#comment-16608440
 ] 

Vladimir Sitnikov commented on CALCITE-2415:
--------------------------------------------

{quote}Would it be acceptable to replicate (clone) PredicateAnalyzer logic 
across all adapters ?{quote}
What do you mean by "all"? Do you include Jdbc adapter as well?
I'm afraid different adapters might have different ways to represent 
expressions and the set of supported expressions might vary.

> Evaluation of predicate "(A or B) and C" fails for MongoDB adapter
> ------------------------------------------------------------------
>
>                 Key: CALCITE-2415
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2415
>             Project: Calcite
>          Issue Type: Bug
>          Components: mongodb
>            Reporter: Andrei Sereda
>            Assignee: Michael Mior
>            Priority: Critical
>
> h2. Queries that are working
> {code:java}
> select count(*) from "elastic" where _MAP['foo'] in ('1') and true;
> select count(*) from "elastic" where _MAP['foo'] ='1' and true;
> select count(*) from "elastic" where _MAP['foo'] in ('1', '2');
> {code}
> h2. Queries that are failing
> {code:java}
> select count(*) from "elastic" where _MAP['foo'] in ('1', '2') and true;
> select count(*) from "elastic" where true and _MAP['foo'] in ('1', '2');
> select count(*) from "elastic" where (_MAP['foo'] ='1' or _MAP['foo'] = '2') 
> and true;
> {code}
> h2. Mongo Adapter Exception
> {quote}select * from "mongo"."col"
>  where _MAP['foo'] in ('1', '2') and true;
> java.lang.AssertionError: cannot translate OR(=(ITEM($0, 'foo'), '1'),
>  =(ITEM($0, 'foo'), '2'))
>  at org.apache.calcite.adapter.mongodb.MongoFilter$
>  Translator.translateMatch2(MongoFilter.java:181)
>  at org.apache.calcite.adapter.mongodb.MongoFilter$
>  Translator.translateAnd(MongoFilter.java:116)
>  at org.apache.calcite.adapter.mongodb.MongoFilter$
>  Translator.translateOr(MongoFilter.java:98)
>  at org.apache.calcite.adapter.mongodb.MongoFilter$
>  Translator.translateMatch(MongoFilter.java:91)
>  at org.apache.calcite.adapter.mongodb.MongoFilter$
>  Translator.access$000(MongoFilter.java:77)
>  at org.apache.calcite.adapter.mongodb.MongoFilter.implement(
>  MongoFilter.java:72)
>  at org.apache.calcite.adapter.mongodb.MongoRel$Implementor.
>  visitChild(MongoRel.java:51)
>  at org.apache.calcite.adapter.mongodb.MongoToEnumerableConverter.
>  implement(MongoToEnumerableConverter.java:84)
>  at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.
>  implementRoot(EnumerableRelImplementor.java:103)
>  at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.
>  toBindable(EnumerableInterpretable.java:92)
> {quote}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to