[ https://issues.apache.org/jira/browse/FLINK-4565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15503481#comment-15503481 ]
Timo Walther commented on FLINK-4565: ------------------------------------- I looked into the code for this issue. It would be very tricky to support IN for the Table API as we currently separate expressions ({{RexNodes}}) from operators ({{RelNodes}}). In the end we would need to call something similar to {{org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard#convertExpression}} {code} final RexSubQuery in = RexSubQuery.in(root.rel, builder.build()); return op.isNotIn() ? rexBuilder.makeCall(SqlStdOperatorTable.NOT, in) : in; {code} {{RexSubQuery}} is a rex node, however, it needs access to {{Table}}/{{LogicalNode}} to get the {{RelNode}}. The following steps need to be implemented: - For Java API: Create a {{UnresolvedTableReference}} expression that takes the name of the table. - For Java API: Resolve the name of the table in {{org.apache.flink.api.table.plan.logical.LogicalNode#resolveExpressions}} to {{TableReference}} using the table environment that is available in this method. {{TableReference}} then has a {{Table}} field. - Create an expression {{In}} that takes a {{TableReference}} and does the above code snippet in {{toRexNode}}. [~chobeat] I hope this helps otherwise it also fine if you let someone else implement this. > Support for SQL IN operator > --------------------------- > > Key: FLINK-4565 > URL: https://issues.apache.org/jira/browse/FLINK-4565 > Project: Flink > Issue Type: Improvement > Components: Table API & SQL > Reporter: Timo Walther > Assignee: Simone Robutti > > It seems that Flink SQL supports the uncorrelated sub-query IN operator. But > it should also be available in the Table API and tested. -- This message was sent by Atlassian JIRA (v6.3.4#6332)