[ https://issues.apache.org/jira/browse/CALCITE-2415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16609788#comment-16609788 ]
Andrei Sereda commented on CALCITE-2415: ---------------------------------------- {quote} What do you mean by "all"? Do you include Jdbc adapter as well? {quote} Not JDBC, but the rest (non-relational data-sources). Elastic, Cassandra, Geode, Mongo etc. {quote} I'm afraid different adapters might have different ways to represent expressions and the set of supported expressions might vary. {quote} Possibly, but from what I see 80% of code seems to be similar across those adapters. They may have different sets of expressions but use of RexVisitor will be almost identical. > 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)