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

lincoln lee closed FLINK-32447.
-------------------------------

> table hints lost when they inside a view referenced by an external query
> ------------------------------------------------------------------------
>
>                 Key: FLINK-32447
>                 URL: https://issues.apache.org/jira/browse/FLINK-32447
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>    Affects Versions: 1.17.1
>            Reporter: lincoln lee
>            Assignee: lincoln lee
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.18.0, 1.17.2
>
>
> Table hints will lost when they inside a view referenced by an external 
> query, this is due to the upgrading of calcite-1.28 (affected by CALCITE-4640 
> which changed the default implementation of SqlDialect suppresses all table 
> hints).
> This can be reproduced by adding a new case to current 
> {code}OptionsHintTest{code}:
> {code}
> +
> +  @Test
> +  def testOptionsHintInsideView(): Unit = {
> +    util.tableEnv.executeSql(
> +      "create view v1 as select * from t1 /*+ OPTIONS(k1='#v111', 
> k4='#v444')*/")
> +    util.verifyExecPlan(s"""
> +                           |select * from t2 join v1 on v1.a = t2.d
> +                           |""".stripMargin)
> +  }
> {code}
> wrong plan which lost table hints(dynamic options):
> {code}
> Join(joinType=[InnerJoin], where=[(a = d)], select=[d, e, f, a, b, c], 
> leftInputSpec=[NoUniqueKey], rightInputSpec=[NoUniqueKey])
> :- Exchange(distribution=[hash[d]])
> :  +- LegacyTableSourceScan(table=[[default_catalog, default_database, t2, 
> source: [OptionsTableSource(props={k3=v3, k4=v4})]]], fields=[d, e, f])
> +- Exchange(distribution=[hash[a]])
>    +- Calc(select=[a, b, (a + 1) AS c])
>       +- LegacyTableSourceScan(table=[[default_catalog, default_database, t1, 
> source: [OptionsTableSource(props={k1=v1, k2=v2})]]], fields=[a, b])
> {code}
> We should use {code}AnsiSqlDialect{code} instead to reserve table hints.



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

Reply via email to