[ https://issues.apache.org/jira/browse/CALCITE-4985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17475024#comment-17475024 ]
ZheHu edited comment on CALCITE-4985 at 1/13/22, 12:27 AM: ----------------------------------------------------------- So far, this issue has't got there about dealing with a bind variable. In ElasticsearchFilter, PredicateAnalyzerTranslator cannot handle RexDynamicParam during translateMatch(*where cat5=?*), which throws an exception as the above description mentioned. I think we should finish the translation for condition, and then I'll figure whether a bind variable can work or not. By the way, I've updated the description to make it more clear. was (Author: vae): So far, this issue has't got there about dealing with a bind variable. In ElasticsearchFilter, PredicateAnalyzerTranslator cannot handle RexDynamicParam during translateMatch(*where cat5=?*), which throws an exception as the above description mentioned. I think we should finish the translation for condition, and then I'll figure whether a bind variable can work or not. > Elasticsearch Adapter fails to execute a prepared statement > ----------------------------------------------------------- > > Key: CALCITE-4985 > URL: https://issues.apache.org/jira/browse/CALCITE-4985 > Project: Calcite > Issue Type: Bug > Components: elasticsearch-adapter > Affects Versions: 1.29.0 > Reporter: ZheHu > Assignee: ZheHu > Priority: Major > > When running the following test in AggregationTest: > {code:java} > @Test void testPrepare() { > String sql = "select * from view where cat5=?"; > CalciteAssert.that() > .with(newConnectionFactory()) > .query(sql) > // currently, it doesn't work with or without the following > PrepareStatementConsumer > .consumesPreparedStatement(p -> p.setInt(1, 1)) > .returns("a"); > } > {code} > I got such exception: > {code:java} > Suppressed: > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$PredicateAnalyzerException: > Unexpected combination of expressions [left: > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$NamedFieldExpression@4a325e09] > [right: null] > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$Visitor.swap(PredicateAnalyzer.java:506) > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$Visitor.binary(PredicateAnalyzer.java:353) > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$Visitor.visitCall(PredicateAnalyzer.java:243) > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer$Visitor.visitCall(PredicateAnalyzer.java:127) > org.apache.calcite.rex.RexCall.accept(RexCall.java:189) > org.apache.calcite.adapter.elasticsearch.PredicateAnalyzer.analyze(PredicateAnalyzer.java:112) > org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter$PredicateAnalyzerTranslator.translateMatch(ElasticsearchFilter.java:102) > org.apache.calcite.adapter.elasticsearch.ElasticsearchFilter.implement(ElasticsearchFilter.java:67) > org.apache.calcite.adapter.elasticsearch.ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:129) > org.apache.calcite.adapter.elasticsearch.ElasticsearchProject.implement(ElasticsearchProject.java:62) > org.apache.calcite.adapter.elasticsearch.ElasticsearchRel$Implementor.visitChild(ElasticsearchRel.java:129) > org.apache.calcite.adapter.elasticsearch.ElasticsearchToEnumerableConverter.implement(ElasticsearchToEnumerableConverter.java:67) > org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:111) > {code} > Useful reference in JDBC Adapter: see > https://issues.apache.org/jira/browse/CALCITE-563 -- This message was sent by Atlassian Jira (v8.20.1#820001)