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

Volodymyr Vysotskyi updated CALCITE-2331:
-----------------------------------------
    Description: 
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. Elastic Adapter Exception
{quote}java.lang.AssertionError: cannot translate OR(=(ITEM($0, 'foo'), '1'),
 =(ITEM($0, 'foo'), '2'))
 at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
 Translator.translateMatch2(ElasticsearchFilter.java:234)
 at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
 Translator.translateAnd(ElasticsearchFilter.java:158)
 at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
 Translator.translateOr(ElasticsearchFilter.java:115)
 at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
 Translator.translateMatch(ElasticsearchFilter.java:101)
 at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
 Translator.access$000(ElasticsearchFilter.java:87)
 at org.apache.calcite.adapter.elasticsearch.
 ElasticsearchFilter.implement(ElasticsearchFilter.java:80)
 at org.apache.calcite.adapter.elasticsearch.
 ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:53)
 at org.apache.calcite.adapter.elasticsearch.
 ElasticsearchToEnumerableConverter.implement(ElasticsearchToEnumerableConve
 rter.java:71)
 at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.
 visitChild(EnumerableRelImplementor.java:98)
 at org.apache.calcite.adapter.enumerable.
 EnumerableAggregate.implement(EnumerableAggregate.java:106)
{quote}

  was:
h2. Queries that are working
{code}
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}
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. Elastic Adapter Exception
{quote}
java.lang.AssertionError: cannot translate OR(=(ITEM($0, 'foo'), '1'),
=(ITEM($0, 'foo'), '2'))
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
Translator.translateMatch2(ElasticsearchFilter.java:234)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
Translator.translateAnd(ElasticsearchFilter.java:158)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
Translator.translateOr(ElasticsearchFilter.java:115)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
Translator.translateMatch(ElasticsearchFilter.java:101)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
Translator.access$000(ElasticsearchFilter.java:87)
        at org.apache.calcite.adapter.elasticsearch.
ElasticsearchFilter.implement(ElasticsearchFilter.java:80)
        at org.apache.calcite.adapter.elasticsearch.
ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:53)
        at org.apache.calcite.adapter.elasticsearch.
ElasticsearchToEnumerableConverter.implement(ElasticsearchToEnumerableConve
rter.java:71)
        at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.
visitChild(EnumerableRelImplementor.java:98)
        at org.apache.calcite.adapter.enumerable.
EnumerableAggregate.implement(EnumerableAggregate.java:106)
{quote}

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}


> Evaluation of predicate "(A or B) and C" fails for Elasticsearch adapter
> ------------------------------------------------------------------------
>
>                 Key: CALCITE-2331
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2331
>             Project: Calcite
>          Issue Type: Bug
>          Components: elasticsearch-adapter
>            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. Elastic Adapter Exception
> {quote}java.lang.AssertionError: cannot translate OR(=(ITEM($0, 'foo'), '1'),
>  =(ITEM($0, 'foo'), '2'))
>  at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
>  Translator.translateMatch2(ElasticsearchFilter.java:234)
>  at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
>  Translator.translateAnd(ElasticsearchFilter.java:158)
>  at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
>  Translator.translateOr(ElasticsearchFilter.java:115)
>  at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
>  Translator.translateMatch(ElasticsearchFilter.java:101)
>  at org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$
>  Translator.access$000(ElasticsearchFilter.java:87)
>  at org.apache.calcite.adapter.elasticsearch.
>  ElasticsearchFilter.implement(ElasticsearchFilter.java:80)
>  at org.apache.calcite.adapter.elasticsearch.
>  ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:53)
>  at org.apache.calcite.adapter.elasticsearch.
>  ElasticsearchToEnumerableConverter.implement(ElasticsearchToEnumerableConve
>  rter.java:71)
>  at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.
>  visitChild(EnumerableRelImplementor.java:98)
>  at org.apache.calcite.adapter.enumerable.
>  EnumerableAggregate.implement(EnumerableAggregate.java:106)
> {quote}



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

Reply via email to