[
https://issues.apache.org/jira/browse/FLINK-30396?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jianhui Dong updated FLINK-30396:
---------------------------------
Description:
As [flink
doc|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#query-hints]
said:
> {{Query hints}} can be used to suggest the optimizer to affect query
> execution plan within a specified query scope. Their effective scope is
> current {{{}Query block{}}}([What are query blocks
> ?|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#what-are-query-blocks-])
> which {{Query Hints}} are specified.
But the sql hint 'LOOKUP' can ,like the demo following:
{code:java}
-- DDL
CREATE TABLE left_table (
lid INTEGER,
lname VARCHAR,
pts AS PROCTIME()
) WITH (
'connector' = 'filesystem',
'format' = 'csv',
'path'='xxx'
)
CREATE TABLE dim_table (
id INTEGER,
name VARCHAR,
mentor VARCHAR,
gender VARCHAR
) WITH (
'connector' = 'jdbc',
'url' = 'xxx',
'table-name' = 'dim1',
'username' = 'xxx',
'password' = 'xxx',
'driver'= 'com.mysql.cj.jdbc.Driver'
)
-- DML
SELECT /*+ LOOKUP('table'='outer') */
ll.id AS lid,
ll.name,
r.mentor,
r.gender
FROM (
SELECT /*+ LOOKUP('table'='inner') */
l.lid AS id,
l.lname AS name,
r.mentor,
r.gender,
l.pts
FROM left_table AS l
JOIN dim_table FOR SYSTEM_TIME AS OF l.pts AS r
ON l.lname = r.name
) ll JOIN dim_table FOR SYSTEM_TIME AS OF ll.pts AS r ON ll.name=r.name{code}
The inner correlate will have two hints: {[LOOKUP inheritPath:[0]
options:\{table=inner}], [LOOKUP inheritPath:[0, 0, 0]
options:\{table=outer}]}, and IMO which maybe is a bug.
The reason for the above case is that the hint 'ALIAS' now only works for join
rel nodes and 'LOOKUP' works for correlate and join rel nodes.
I think maybe the better way would be to make 'ALIAS' support both correlate
and join rel nodes like 'LOOKUP'.
was:
As [flink
doc|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#query-hints]
said:
> {{Query hints}} can be used to suggest the optimizer to affect query
> execution plan within a specified query scope. Their effective scope is
> current {{{}Query block{}}}([What are query blocks
> ?|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#what-are-query-blocks-])
> which {{Query Hints}} are specified.
But the sql hint 'LOOKUP' can ,like the demo following:
{code:java}
-- DDL
CREATE TABLE left_table (
lid INTEGER,
lname VARCHAR,
pts AS PROCTIME()
) WITH (
'connector' = 'filesystem',
'format' = 'csv',
'path'='xxx'
)
CREATE TABLE dim_table (
id INTEGER,
name VARCHAR,
mentor VARCHAR,
gender VARCHAR
) WITH (
'connector' = 'jdbc',
'url' = 'xxx',
'table-name' = 'dim1',
'username' = 'xxx',
'password' = 'xxx',
'driver'= 'com.mysql.cj.jdbc.Driver'
)
-- DML
SELECT /*+ LOOKUP('table'='outer') */
ll.id AS lid,
ll.name,
r.mentor,
r.gender
FROM (
SELECT /*+ LOOKUP('table'='inner') */
l.lid AS id,
l.lname AS name,
r.mentor,
r.gender,
l.pts
FROM left_table AS l
JOIN dim_table FOR SYSTEM_TIME AS OF l.pts AS r
ON l.lname = r.name
) ll JOIN dim_table FOR SYSTEM_TIME AS OF ll.pts AS r ON ll.name=r.name{code}
The inner correlate will have two hints: \{[LOOKUP inheritPath:[0]
options:{table=inner}], [LOOKUP inheritPath:[0, 0, 0] options:\{table=outer}]},
and IMO which maybe is a bug.
The reason for the above case is that the hint 'ALIAS' now only works for join
rel nodes and 'LOOKUP' works for correlate and join rel nodes.
I think maybe the better way would be to make 'ALIAS' support both correlate
and join rel nodes like 'LOOKUP'.
> sql hint 'LOOKUP' which is defined in outer query block may take effect in
> inner query block
> --------------------------------------------------------------------------------------------
>
> Key: FLINK-30396
> URL: https://issues.apache.org/jira/browse/FLINK-30396
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Planner
> Affects Versions: 1.16.0
> Reporter: Jianhui Dong
> Priority: Major
>
> As [flink
> doc|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#query-hints]
> said:
> > {{Query hints}} can be used to suggest the optimizer to affect query
> > execution plan within a specified query scope. Their effective scope is
> > current {{{}Query block{}}}([What are query blocks
> > ?|https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/queries/hints/#what-are-query-blocks-])
> > which {{Query Hints}} are specified.
> But the sql hint 'LOOKUP' can ,like the demo following:
> {code:java}
> -- DDL
> CREATE TABLE left_table (
> lid INTEGER,
> lname VARCHAR,
> pts AS PROCTIME()
> ) WITH (
> 'connector' = 'filesystem',
> 'format' = 'csv',
> 'path'='xxx'
> )
> CREATE TABLE dim_table (
> id INTEGER,
> name VARCHAR,
> mentor VARCHAR,
> gender VARCHAR
> ) WITH (
> 'connector' = 'jdbc',
> 'url' = 'xxx',
> 'table-name' = 'dim1',
> 'username' = 'xxx',
> 'password' = 'xxx',
> 'driver'= 'com.mysql.cj.jdbc.Driver'
> )
> -- DML
> SELECT /*+ LOOKUP('table'='outer') */
> ll.id AS lid,
> ll.name,
> r.mentor,
> r.gender
> FROM (
> SELECT /*+ LOOKUP('table'='inner') */
> l.lid AS id,
> l.lname AS name,
> r.mentor,
> r.gender,
> l.pts
> FROM left_table AS l
> JOIN dim_table FOR SYSTEM_TIME AS OF l.pts AS r
> ON l.lname = r.name
> ) ll JOIN dim_table FOR SYSTEM_TIME AS OF ll.pts AS r ON ll.name=r.name{code}
> The inner correlate will have two hints: {[LOOKUP inheritPath:[0]
> options:\{table=inner}], [LOOKUP inheritPath:[0, 0, 0]
> options:\{table=outer}]}, and IMO which maybe is a bug.
> The reason for the above case is that the hint 'ALIAS' now only works for
> join rel nodes and 'LOOKUP' works for correlate and join rel nodes.
> I think maybe the better way would be to make 'ALIAS' support both correlate
> and join rel nodes like 'LOOKUP'.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)