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

Dawid Wysakowicz closed FLINK-38731.
------------------------------------
    Resolution: Implemented

Implemented in 271266a9cd5e4b5d3d564c956cfcda76cb60fa36

> Add support for MULTI_JOIN hint
> -------------------------------
>
>                 Key: FLINK-38731
>                 URL: https://issues.apache.org/jira/browse/FLINK-38731
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / Planner
>            Reporter: Gustavo de Morais
>            Assignee: Gustavo de Morais
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.3.0
>
>
> We want to expose the MultiJoin operator via a hint so that users can control 
> which tables are merged into a MultiJoin and which ones should continue to 
> use the regular join operator. The user can then control wether only some 
> tables or all tables should be merged into the MultiJoin. The existing common 
> join key restrictions continue to apply. The hint can be used in combination 
> with the STATE_TTL hint as well.
>  
> These should be supported:
> {code:java}
> CREATE TABLE t1 (id BIGINT, name STRING, age INT) WITH (...);
> CREATE TABLE t2 (id BIGINT, name STRING, age INT) WITH (...);
> CREATE TABLE t3 (id BIGINT, name STRING, age INT) WITH (...);
> {code}
> {code:java}
> -- Flink will use the MultiJoin operator for the three-way join.
> SELECT /*+ MULTI_JOIN(t1, t2, t3) */ * FROM t1 
> JOIN t2 ON t1.id = t2.id 
> JOIN t3 ON t1.id = t3.id;{code}
> {code:java}
> -- Using table names instead of aliases.
> SELECT /*+ MULTI_JOIN(Users, Orders, Payments) */ * FROM Users 
> INNER JOIN Orders ON Users.user_id = Orders.user_id 
> INNER JOIN Payments ON Users.user_id = Payments.user_id;
> {code}
> {code:java}
> -- Partial match: only t1 and t2 will use MultiJoin, t3 will use regular join.
> SELECT /*+ MULTI_JOIN(t1, t2) */ * FROM t1 
> JOIN t2 ON t1.id = t2.id 
> JOIN t3 ON t1.id = t3.id;
> {code}
> {code:java}
> -- Combining MULTI_JOIN with STATE_TTL hint.
> SELECT /*+ MULTI_JOIN(t1, t2, t3), STATE_TTL('t1'='1d', 't2'='2d', 
> 't3'='12h') */ * FROM t1 
> JOIN t2 ON t1.id = t2.id 
> JOIN t3 ON t1.id = t3.id;{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to