[
https://issues.apache.org/jira/browse/CALCITE-4232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yu Xu resolved CALCITE-4232.
----------------------------
Fix Version/s: 1.42.0
Resolution: Fixed
Fixed in
[c2cbd89|https://github.com/apache/calcite/commit/c2cbd8912d593193bb7ebcd2d25836fcb4296d76]
Thank you report this issue [~shlok7296]
Thank you for the review [~jensen]
> Elasticsearch IN Query is not supported
> ----------------------------------------
>
> Key: CALCITE-4232
> URL: https://issues.apache.org/jira/browse/CALCITE-4232
> Project: Calcite
> Issue Type: Improvement
> Components: elasticsearch-adapter
> Reporter: Shlok Srivastava
> Assignee: Yu Xu
> Priority: Major
> Labels: IN, calcite, elasticsearch, pull-request-available, query
> Fix For: 1.42.0
>
> Time Spent: 2h 20m
> Remaining Estimate: 0h
>
> IN clause is required in multiple queries to fetch documents that contain
> more than one *exact terms* in a provided field.
> SQL Query
> {code:java}
> name IN ("kimchy", "james"){code}
> RelNode for same-
> {code:java}
> rexb.makeCall(SqlStdOperatorTable.IN, builder.field("name"),
> rexb.makeLiteral("kimchy"), rexb.makeLiteral("james")){code}
>
> *Problem* : Calcite for above RelNode throws
> _java.sql.SQLException : Error while preparing statement [null]_
> _Suppressed: java.lang.UnsupportedOperationException: Can't handle partial
> QueryExpression:
> org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$CompoundQueryExpression@3e782f91_
> _at
> org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer.analyze(PredicateAnalyzer.java:114)_
> _at
> org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$PredicateAnalyzerTranslator.translateMatch(ElasticsearchFilter.java:99)_
> _at
> org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter.implement(ElasticsearchFilter.java:64)_
> _at
> org.apache.calcite.adapter.elasticsearch.ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:140)_
> _at
> org.apache.calcite.adapter.elasticsearch.ElasticsearchProject.implement(ElasticsearchProject.java:59)_
> Expected Elasticsearch Query -
> {code:java}
> GET /_search
> {
> "query": {
> "terms": {
> "name": [
> "kimchy",
> "james"
> ]
> }
> }
> }
> {code}
> *Solution*: Extend _IN SQLTableOperator_ support in elasticsearch adapters to
> use Terms Query Builder which is already present in elasticsearch adapters.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)