[
https://issues.apache.org/jira/browse/FLINK-15555?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
hailong wang closed FLINK-15555.
--------------------------------
Resolution: Not A Problem
> Delete TABLE_OPTIMIZER_REUSE_SOURCE_ENABLED option for subplaner reuse
> -----------------------------------------------------------------------
>
> Key: FLINK-15555
> URL: https://issues.apache.org/jira/browse/FLINK-15555
> Project: Flink
> Issue Type: Improvement
> Components: Table SQL / Runtime
> Affects Versions: 1.10.0
> Reporter: hailong wang
> Priority: Major
> Fix For: 1.12.0
>
>
> Blink planner supports subplan reuse. If
> TABLE_OPTIMIZER_REUSE_SUB_PLAN_ENABLED is true, the optimizer will try to
> find out duplicated sub-plans and reuse them. And if
> TABLE_OPTIMIZER_REUSE_SOURCE_ENABLED is true, the optimizer will try to find
> out duplicated table sources and reuse them.
> The option of TABLE_OPTIMIZER_REUSE_SOURCE_ENABLED used to defined whether
> TableSourceScan should be reused.
> But if the parent's relNode of TableSourceScan can be reused, it will be
> also reused even if TABLE_OPTIMIZER_REUSE_SOURCE_ENABLED is false, just like
> follow sql:
> {code:java}
> WITH t AS (SELECT a, b, e FROM x, y WHERE x.a = y.d)
> SELECT t1.*, t2.* FROM t t1, t t2 WHERE t1.b = t2.e AND t1.a < 10 AND t2.a > 5
> {code}
> the plan may be as follow:
> {code:java}
> HashJoin(joinType=[InnerJoin], where=[=(b, e0)], select=[a, b, e, a0, b0,
> e0], build=[right])
> :- Exchange(distribution=[hash[b]], shuffle_mode=[BATCH])
> : +- Calc(select=[a, b, e])
> : +- HashJoin(joinType=[InnerJoin], where=[=(a, d)], select=[a, b, d, e],
> build=[left])
> : :- Exchange(distribution=[hash[a]])
> : : +- Calc(select=[a, b], where=[<(a, 10)])
> : : +- TableSourceScan(table=[[default_catalog, default_database,
> x, source: [TestTableSource(a, b, c)]]], fields=[a, b, c])
> : +- Exchange(distribution=[hash[d]], reuse_id=[1])
> : +- Calc(select=[d, e])
> : +- TableSourceScan(table=[[default_catalog, default_database,
> y, source: [TestTableSource(d, e, f)]]], fields=[d, e, f])
> +- Exchange(distribution=[hash[e]])
> +- Calc(select=[a, b, e])
> +- HashJoin(joinType=[InnerJoin], where=[=(a, d)], select=[a, b, d, e],
> build=[left])
> :- Exchange(distribution=[hash[a]])
> : +- Calc(select=[a, b], where=[>(a, 5)])
> : +- TableSourceScan(table=[[default_catalog, default_database,
> x, source: [TestTableSource(a, b, c)]]], fields=[a, b, c])
> +- Reused(reference_id=[1])
> {code}
> So I think it is useless to defined this option, only
> TABLE_OPTIMIZER_REUSE_SUB_PLAN_ENABLED will be ok.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)