You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Jesus Camacho Rodriguez (JIRA)" <ji...@apache.org> on 2019/02/14 19:30:00 UTC

[jira] [Comment Edited] (CALCITE-2842) Computing digest of IN expressions leads to Exceptions

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

Jesus Camacho Rodriguez edited comment on CALCITE-2842 at 2/14/19 7:29 PM:
---------------------------------------------------------------------------

[~julianhyde], thanks for the feedback. {{SIMPLE_BINARY_OPS}} seems to be used only to compute digest for RexCall. IN clause seems to be slightly different than other ops in the group, since second parameter would be a row/struct, even in SQL node realm? I am just wondering if it would be OK to push this change, since 1) it will not affect any other Calcite logic as it does not use SqlKind.IN in RexCall nodes, and 2) it will help us triggering some rewritings that we do in Hive to expand those IN clauses via rules.


was (Author: jcamachorodriguez):
[~julianhyde], thanks for the feedback. {{SIMPLE_BINARY_OPS}} seems to be used only to compute digest for RexCall. IN clause seems to be slightly different than other ops in the group, since second parameter would be a row/struct, even in SQL node realm? I am just wondering if it would be OK to push this change, since 1) it will not affect any other Calcite logic as it does not use SqlKind.IN in RexCall nodes, and 2) it will help us triggering some rewritings that do in Hive to expand those IN clauses via rules.

> Computing digest of IN expressions leads to Exceptions
> ------------------------------------------------------
>
>                 Key: CALCITE-2842
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2842
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Zoltan Haindrich
>            Assignee: Julian Hyde
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Testcase:
> {code}
>  /*  RexProgramTest */
>   @Test public void testInDigest() {
>     RexNode e = in(vInt(), literal(1), literal(2));
>     assertThat(e.toString(), is("IN(?0.int0, 1, 2)"));
>   }
>  /*  RexProgramBuilder */
>   protected RexNode in(Iterable<? extends RexNode> nodes) {
>     return rexBuilder.makeCall(SqlStdOperatorTable.IN,
>         ImmutableList.copyOf(nodes));
>   }
> {code}
> The exception is due to that it tries to look at the other operand https://github.com/apache/calcite/blob/883666929478aabe07ee5b9e572c43a6f1a703e2/core/src/main/java/org/apache/calcite/rex/RexCall.java#L115
> [SIMPLE_BINARY_OPS|https://github.com/apache/calcite/blob/883666929478aabe07ee5b9e572c43a6f1a703e2/core/src/main/java/org/apache/calcite/rex/RexCall.java#L64]  contains [COMPARISION|https://github.com/apache/calcite/blob/883666929478aabe07ee5b9e572c43a6f1a703e2/core/src/main/java/org/apache/calcite/sql/SqlKind.java#L1248] which also contains "IN"
> this was introduced in CALCITE-2454 a few days ago; bug not released



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