Hi, Xiangyu Thanks for pinging me, the interface name looks good to me.
Best, Ron xiangyu feng <xiangyu...@gmail.com> 于2025年2月24日周一 17:59写道: > Hi Lincoln, > > Thx for suggestion. > > -- 1st, for the sql example in the Motivation part, why is cast nulls > included in the select clause after union all multiple inputs? > > I do have misplaced the CAST NULLs, revised in the FLIP[1]. > > -- 2nd, simplifying the multi partial-insert example, what would the > equivalent sql look like to the user after applying the optimization > provided by this FLIP? > ``` > INSERT INTO sink(pk, f1) SELECT ... FROM table1; > INSERT INTO sink(pk, f2) SELECT ... FROM table2; > INSERT INTO sink(pk, f3) SELECT ... FROM table3; > ``` > > Actually, this is already the simplified SQL here. The optimization here > is that, with this SQL, user can submit a united datastream job writing to > the sink table without concerns for concurrency issues. > > -- 3rd, for sink digest description in proposed changes, IIUC, it should > be `b` for `not include` and `c` for `include`? > > I think there is an ambiguity for the previous naming of the interface: > `SupportsTargetColumnWriting`. The name was originally meaning that the > target columns has been **used** in the sink so the sink digest should > **include** this information. > After second thought, I've changed the naming of this interface to > `SupportsTargetColumnReusing` to remove this ambiguity in the FLIP[1]. When > this ability is enabled, the sink can support reuse with different target > columns which means the sink digest should **not include** this > information. > > @Lincoln, looking forward to hear you back for the response. > > Also, @Ron Liu @Weijie Guo I would like to hear more from you about this > new interface naming. > > [1] > https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner > > Regards, > Xiangyu Feng > > > Lincoln Lee <lincoln.8...@gmail.com> 于2025年2月23日周日 22:43写道: > >> Hi xiangyu, >> >> Sorry for my late reply! I have some questions for the FLIP: >> >> 1st, for the sql example in the Motivation part, why is cast nulls >> included >> in >> the select clause after union all multiple inputs? Related to the >> partial-insert >> example later, should the cast nulls be in the select clause inside the >> union all? >> ``` >> -- Flink SQL >> INSERT INTO sink >> SELECT >> id1, >> CAST(NULL AS STRING) AS f1, >> CAST(NULL AS STRING) AS f2, >> CAST(NULL AS STRING) AS f3, >> CAST(NULL AS STRING) AS f4, >> CAST(NULL AS STRING) AS f5, >> CAST(NULL AS STRING) AS f6, >> CAST(NULL AS STRING) AS f7, >> CAST(NULL AS STRING) AS f8, >> CAST(NULL AS STRING) AS f9, >> ... ... >> FROM ( >> SELECT ... ... >> FROM table1 >> UNION ALL >> SELECT ... ... >> FROM table2 >> ``` >> >> 2nd, simplifying the multi partial-insert example, what would the >> equivalent >> sql look like to the user after applying the optimization provided by this >> FLIP? >> ``` >> INSERT INTO sink(pk, f1) SELECT ... FROM table1; >> INSERT INTO sink(pk, f2) SELECT ... FROM table2; >> INSERT INTO sink(pk, f3) SELECT ... FROM table3; >> ``` >> >> 3rd, for sink digest description in proposed changes, IIUC, it should be >> `b` for `not include` and `c` for `include`? >> ``` >> >> Factors *considered* for sink node digest depends on circumstance: >> >> 1. sink target columns >> 1. The sink node digest will* include* the target columns if the sink >> has not implement the target column writing ability interface. >> 2. The sink node digest will* include* the target columns when the >> sink has enabled the target column writing ability >> 3. The sink node digest will* not include* the target columns when >> the sink has not enabled the target column writing ability >> >> ``` >> >> >> Best, >> Lincoln Lee >> >> >> xiangyu feng <xiangyu...@gmail.com> 于2025年2月20日周四 09:41写道: >> >> > Hi all, >> > >> > Thank you all for the comments. >> > >> > If there is no further comment, I will open the voting thread in 3 days. >> > >> > Regards, >> > Xiangyu >> > >> > >> > Ron Liu <ron9....@gmail.com>于2025年2月19日 周三17:58写道: >> > >> > > Hi, Xiangyu >> > > >> > > Thaks for updates, LGTM >> > > >> > > Best, >> > > Ron >> > > >> > > xiangyu feng <xiangyu...@gmail.com> 于2025年2月19日周三 17:13写道: >> > > >> > >> Hi Ron, >> > >> >> > >> Thx for ur advice. I've made the changes to current FLIP[1] >> including >> > >> renaming the interface and remove the default implementation. As we >> have >> > >> discussed, the target columns will be compared in sink reuse if the >> sink >> > >> has not implemented the `SupportsTargetColumnWriting` ability. This >> will >> > >> make sure the sink reuse feature can still be safely enabled by >> default. >> > >> >> > >> [1] >> > >> >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner >> > >> >> > >> Best, >> > >> Xiangyu Feng >> > >> >> > >> Ron Liu <ron9....@gmail.com> 于2025年2月19日周三 10:25写道: >> > >> >> > >>> Hi Xiangyu, >> > >>> >> > >>> Thanks for your reply, the updates LGTM overall. >> > >>> >> > >>> 1. Regarding the naming of the interface, what do you think about >> > >>> calling it SupportsTargetColumnWriting? Here I would like to >> emphasize >> > the >> > >>> support for partial column writing, and I personally think the >> naming >> > can >> > >>> be aligned with SupportsWritingMetadata. >> > >>> >> > >>> 2. Regarding the interface methods, is it necessary to provide a >> > default >> > >>> implementation, do most of the stores support partial column >> writing? >> > >>> >> > >>> >> > >>> Best, >> > >>> Ron >> > >>> >> > >>> Cong Cheng <congchengch...@gmail.com> 于2025年2月18日周二 16:12写道: >> > >>> >> > >>>> Hi Xiangyu, >> > >>>> >> > >>>> Introduce a new sink ability interface named >> > >>>> `SupportsTargetColumnUpdate`, >> > >>>> > this interface will tell the planner if the sink has considered >> the >> > >>>> target >> > >>>> > columns information in its implementation; >> > >>>> >> > >>>> >> > >>>> I think it makes a lot of sense, +1 for this ability. >> > >>>> >> > >>>> Sorry to all that I sended the draft of the content twice, >> something >> > >>>> wrong with the enter of my keyboard. >> > >>>> >> > >>>> Best, >> > >>>> Cong Cheng >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> >> > >>>> xiangyu feng <xiangyu...@gmail.com> 于2025年2月18日周二 15:06写道: >> > >>>> >> > >>>> > Hi Kevin, >> > >>>> > >> > >>>> > Thx for ur valuable suggestion. I've made a few changes to >> current >> > >>>> FLIP[1]. >> > >>>> > >> > >>>> > 1, Introduce a new sink ability interface named >> > >>>> > `SupportsTargetColumnUpdate`, this interface will tell the >> planner >> > if >> > >>>> the >> > >>>> > sink has considered the target columns information in its >> > >>>> implementation; >> > >>>> > >> > >>>> > 2, This ability will return true by default for safety >> > consideration; >> > >>>> > >> > >>>> > 3, When generating node digest for sink reuse, the digest will >> only >> > >>>> ignore >> > >>>> > the target column infos when this ability return false. This will >> > >>>> require >> > >>>> > extra work for specific sink. >> > >>>> > >> > >>>> > By applying these changes, we can safely enable the sink reuse >> > >>>> feature by >> > >>>> > default even for sinks like JDBC . And for sinks like Paimon, we >> can >> > >>>> also >> > >>>> > reuse the sink node across multiple partial-update streams with >> > >>>> different >> > >>>> > target columns by revising paimon sink to implement this >> interface. >> > >>>> > >> > >>>> > Glad to hear you back for these updates. >> > >>>> > >> > >>>> > [1] >> > >>>> > >> > >>>> >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner >> > >>>> > >> > >>>> > >> > >>>> > >> > >>>> > Kevin Cheng <congchengch...@gmail.com> 于2025年2月14日周五 16:13写道: >> > >>>> > >> > >>>> >> Hi Xiangyu and Ron, >> > >>>> >> >> > >>>> >> I agree that sink reuse can be enabled by default from Flink >> > Planner >> > >>>> >> perspective. But the planner should be informed by Sink >> Connector >> > >>>> that >> > >>>> >> whether the planner can reuse different sink with different >> target >> > >>>> >> columns. >> > >>>> >> >> > >>>> >> Take JBDC sink as an example, under partial update >> circumstances, >> > >>>> the JDBC >> > >>>> >> needs to know the target sink or update columns of every record. >> > >>>> However, >> > >>>> >> the target columns info is discarded in current FLIP design. >> > >>>> >> >> > >>>> >> Best, >> > >>>> >> Xiangyu >> > >>>> >> >> > >>>> >> xiangyu feng <xiangyu...@gmail.com> 于2025年2月14日周五 13:51写道: >> > >>>> >> >> > >>>> >> > Hi Ron, >> > >>>> >> > >> > >>>> >> > After second thought, taking sink reuse as a long awaited >> feature >> > >>>> >> > with significant benefits for users, I agree to enable this in >> > the >> > >>>> first >> > >>>> >> > place. Similar features like >> > >>>> `table.optimizer.reuse-sub-plan-enabled` >> > >>>> >> and >> > >>>> >> > `table.optimizer.reuse-source-enabled` are also enabled by >> > >>>> default. From >> > >>>> >> > this point of view, sink reuse should be the same. >> > >>>> >> > >> > >>>> >> > The Flip[1] has been revised accordingly. Thx for suggestion. >> > >>>> >> > >> > >>>> >> > [1] >> > >>>> >> > >> > >>>> >> > >> > >>>> >> >> > >>>> >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner >> > >>>> >> > >> > >>>> >> > Regards, >> > >>>> >> > Xiangyu >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > >> > >>>> >> > Ron Liu <ron9....@gmail.com> 于2025年2月14日周五 12:10写道: >> > >>>> >> > >> > >>>> >> > > Hi, Xiangyu >> > >>>> >> > > >> > >>>> >> > > >>> I prefer to set the default value of this option >> as'false >> > in >> > >>>> the >> > >>>> >> > first >> > >>>> >> > > place. Setting as true might introduce unexpected behavior >> for >> > >>>> users >> > >>>> >> > when >> > >>>> >> > > operating existing jobs. Maybe we should introduce this >> feature >> > >>>> at >> > >>>> >> first >> > >>>> >> > > and discuss enabling this feature as default in a separated >> > >>>> thread. >> > >>>> >> WDYT? >> > >>>> >> > > >> > >>>> >> > > 1. What unexpected behaviors do you think this might >> introduce? >> > >>>> For >> > >>>> >> Sink >> > >>>> >> > > nodes, which are generally stateless, I intuitively >> understand >> > >>>> that no >> > >>>> >> > > state compatibility issues will be introduced after Sink >> reuse. >> > >>>> >> > > >> > >>>> >> > > 2. Since Sink reuse benefits users, why not enable this >> feature >> > >>>> by >> > >>>> >> > default >> > >>>> >> > > on the first day it is introduced? If your concern is >> potential >> > >>>> >> unhandled >> > >>>> >> > > corner cases in the implementation, I consider those to be >> > bugs. >> > >>>> We >> > >>>> >> > should >> > >>>> >> > > prioritize fixing them rather than blocking the default >> > >>>> enablement of >> > >>>> >> > this >> > >>>> >> > > optimization. >> > >>>> >> > > >> > >>>> >> > > 3. If we don't enable it by default now, when should we? >> What >> > >>>> specific >> > >>>> >> > > milestones or actions are needed during the waiting period? >> > Your >> > >>>> >> > concerns >> > >>>> >> > > about unintended behaviors would still exist even if we >> enable >> > it >> > >>>> >> later. >> > >>>> >> > > Why delay resolving this in a separate discussion instead of >> > >>>> >> finalizing >> > >>>> >> > it >> > >>>> >> > > here? >> > >>>> >> > > >> > >>>> >> > > 4. From our internal practice, users still want to enjoy the >> > >>>> benefits >> > >>>> >> of >> > >>>> >> > > this feature by default. >> > >>>> >> > > >> > >>>> >> > > >> > >>>> >> > > Best, >> > >>>> >> > > Ron >> > >>>> >> > > >> > >>>> >> > > xiangyu feng <xiangyu...@gmail.com> 于2025年2月13日周四 15:57写道: >> > >>>> >> > > >> > >>>> >> > > > Hi Ron, >> > >>>> >> > > > >> > >>>> >> > > > Thx for quick response. >> > >>>> >> > > > >> > >>>> >> > > > - should the default value be true for the newly >> introduced >> > >>>> option >> > >>>> >> > > > `table.optimizer.reuse-sink-enabled`? >> > >>>> >> > > > >> > >>>> >> > > > I prefer to set the default value of this option as'false >> in >> > >>>> the >> > >>>> >> first >> > >>>> >> > > > place. Setting as true might introduce unexpected >> behavior >> > for >> > >>>> >> users >> > >>>> >> > > when >> > >>>> >> > > > operating existing jobs. Maybe we should introduce this >> > >>>> feature at >> > >>>> >> > first >> > >>>> >> > > > and discuss enabling this feature as default in a >> separated >> > >>>> thread. >> > >>>> >> > WDYT? >> > >>>> >> > > > >> > >>>> >> > > > - have you considered the technical implementation options >> > and >> > >>>> are >> > >>>> >> they >> > >>>> >> > > > feasible? >> > >>>> >> > > > >> > >>>> >> > > > Yes, we have already implemented the POC internally. It >> works >> > >>>> well. >> > >>>> >> > > > >> > >>>> >> > > > Looking forward for your feedback. >> > >>>> >> > > > >> > >>>> >> > > > Best, >> > >>>> >> > > > Xiangyu >> > >>>> >> > > > >> > >>>> >> > > > Ron Liu <ron9....@gmail.com> 于2025年2月13日周四 14:55写道: >> > >>>> >> > > > >> > >>>> >> > > > > Hi, Xiangyu >> > >>>> >> > > > > >> > >>>> >> > > > > Thank you for proposing this FLIP, it's great work and >> > looks >> > >>>> very >> > >>>> >> > > useful >> > >>>> >> > > > > for users. >> > >>>> >> > > > > >> > >>>> >> > > > > I have the following two questions regarding the >> content of >> > >>>> the >> > >>>> >> FLIP: >> > >>>> >> > > > > 1. Since sink reuse is very useful, should the default >> > value >> > >>>> be >> > >>>> >> true >> > >>>> >> > > for >> > >>>> >> > > > > the newly introduced option >> > >>>> `table.optimizer.reuse-sink-enabled`, >> > >>>> >> and >> > >>>> >> > > > > should the engine enable this optimization by default. >> > >>>> Currently >> > >>>> >> for >> > >>>> >> > > > source >> > >>>> >> > > > > reuse, the default value of >> > >>>> >> > `sql.optimizer.reuse.table-source.enabled` >> > >>>> >> > > > > option is also true, which does not require user access >> by >> > >>>> >> default, >> > >>>> >> > so >> > >>>> >> > > I >> > >>>> >> > > > > think the engine should turn on Sink reuse optimization >> by >> > >>>> >> default. >> > >>>> >> > > > > 2. Regarding Sink Digest, you mentioned disregarding the >> > sink >> > >>>> >> target >> > >>>> >> > > > > column, which I think is a very good suggestion, and >> very >> > >>>> useful >> > >>>> >> if >> > >>>> >> > it >> > >>>> >> > > > can >> > >>>> >> > > > > be done. I have a question: have you considered the >> > technical >> > >>>> >> > > > > implementation options and are they feasible? >> > >>>> >> > > > > >> > >>>> >> > > > > Best, >> > >>>> >> > > > > Ron >> > >>>> >> > > > > >> > >>>> >> > > > > xiangyu feng <xiangyu...@gmail.com> 于2025年2月13日周四 >> 12:56写道: >> > >>>> >> > > > > >> > >>>> >> > > > > > Hi all, >> > >>>> >> > > > > > >> > >>>> >> > > > > > Thank you all for the comments. >> > >>>> >> > > > > > >> > >>>> >> > > > > > If there is no further comment, I will open the voting >> > >>>> thread >> > >>>> >> in 3 >> > >>>> >> > > > days. >> > >>>> >> > > > > > >> > >>>> >> > > > > > Regards, >> > >>>> >> > > > > > Xiangyu >> > >>>> >> > > > > > >> > >>>> >> > > > > > xiangyu feng <xiangyu...@gmail.com> 于2025年2月11日周二 >> > 14:17写道: >> > >>>> >> > > > > > >> > >>>> >> > > > > > > Link for Paimon LocalMerge Operator[1] >> > >>>> >> > > > > > > >> > >>>> >> > > > > > > [1] >> > >>>> >> > > > > > > >> > >>>> >> > > > > > >> > >>>> >> > > > > >> > >>>> >> > > > >> > >>>> >> > > >> > >>>> >> > >> > >>>> >> >> > >>>> >> > >> https://paimon.apache.org/docs/master/maintenance/write-performance/#local-merging >> > >>>> >> > > > > > > >> > >>>> >> > > > > > > xiangyu feng <xiangyu...@gmail.com> 于2025年2月11日周二 >> > >>>> 14:03写道: >> > >>>> >> > > > > > > >> > >>>> >> > > > > > >> Follow the above, >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> "And for SinkWriter, the data structure to be >> > processed >> > >>>> >> should >> > >>>> >> > be >> > >>>> >> > > > > > fixed." >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> I'm not very sure why the data structure of >> SinkWriter >> > >>>> >> should be >> > >>>> >> > > > > fixed. >> > >>>> >> > > > > > >> Can you elaborate the scenario here? >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> "Is there a node or an operator to fill in the >> > >>>> inconsistent >> > >>>> >> > field >> > >>>> >> > > > of >> > >>>> >> > > > > > >> Rowdata that passed from different Sources?" >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> By `filling in the inconsistent field from >> different >> > >>>> >> sources`, >> > >>>> >> > do >> > >>>> >> > > > you >> > >>>> >> > > > > > >> refer to implementations like the LocalMerge >> Operator >> > >>>> [1] for >> > >>>> >> > > > Paimon? >> > >>>> >> > > > > > IMHO, >> > >>>> >> > > > > > >> this should not be included in the Sink Reuse. The >> > >>>> merging >> > >>>> >> > > behavior >> > >>>> >> > > > of >> > >>>> >> > > > > > >> multiple sources should be considered inside of the >> > >>>> sink. >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> Regards, >> > >>>> >> > > > > > >> Xiangyu Feng >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >> xiangyu feng <xiangyu...@gmail.com> 于2025年2月11日周二 >> > >>>> 13:46写道: >> > >>>> >> > > > > > >> >> > >>>> >> > > > > > >>> Hi Yanquan, >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>> Thx for reply. IIUC, the schema of CatalogTable >> > should >> > >>>> >> contain >> > >>>> >> > > all >> > >>>> >> > > > > > >>> target columns for sources. If not, a SQL >> validation >> > >>>> >> exception >> > >>>> >> > > > should >> > >>>> >> > > > > > be >> > >>>> >> > > > > > >>> raised for planner. >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>> Regards, >> > >>>> >> > > > > > >>> Xiangyu Feng >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>> Yanquan Lv <decq12y...@gmail.com> 于2025年2月10日周一 >> > >>>> 16:25写道: >> > >>>> >> > > > > > >>> >> > >>>> >> > > > > > >>>> Hi, Xiangyu. Thanks for driving this. >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> I have a question to confirm: >> > >>>> >> > > > > > >>>> Considering the case that different Sources use >> > >>>> different >> > >>>> >> > > > > columns[1], >> > >>>> >> > > > > > >>>> will the Schema of CatalogTable[2] contain all >> > target >> > >>>> >> columns >> > >>>> >> > > for >> > >>>> >> > > > > > Sources? >> > >>>> >> > > > > > >>>> And for SinkWriter, the data structure to be >> > processed >> > >>>> >> should >> > >>>> >> > be >> > >>>> >> > > > > > fixed. >> > >>>> >> > > > > > >>>> Is there a node or an operator to fill in the >> > >>>> inconsistent >> > >>>> >> > field >> > >>>> >> > > > of >> > >>>> >> > > > > > Rowdata >> > >>>> >> > > > > > >>>> that passed from different Sources? >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> [1] >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >> > >>>> >> > > > > >> > >>>> >> > > > >> > >>>> >> > > >> > >>>> >> > >> > >>>> >> >> > >>>> >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner >> > >>>> >> > > > > > >>>> [2] >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >> > >>>> >> > > > > >> > >>>> >> > > > >> > >>>> >> > > >> > >>>> >> > >> > >>>> >> >> > >>>> >> > >> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sourcessinks/#planning >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> > 2025年2月6日 17:06,xiangyu feng < >> > xiangyu...@gmail.com> >> > >>>> 写道: >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > Hi devs, >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > I'm opening this thread to discuss FLIP-506: >> > Support >> > >>>> >> Reuse >> > >>>> >> > > > > Multiple >> > >>>> >> > > > > > >>>> Table >> > >>>> >> > > > > > >>>> > Sinks in Planner[1]. >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > Currently if users want to partial-update a >> > >>>> downstream >> > >>>> >> table >> > >>>> >> > > > from >> > >>>> >> > > > > > >>>> multiple >> > >>>> >> > > > > > >>>> > source tables in one datastream, they would >> have >> > to >> > >>>> >> manually >> > >>>> >> > > > union >> > >>>> >> > > > > > all >> > >>>> >> > > > > > >>>> > source tables and add lots of "cast(null as >> > string) >> > >>>> as >> > >>>> >> xxx" >> > >>>> >> > in >> > >>>> >> > > > > Flink >> > >>>> >> > > > > > >>>> SQL. >> > >>>> >> > > > > > >>>> > This will make the SQL here hard to use and >> > >>>> maintain. >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > After discussing with Weijie Guo, we think >> that by >> > >>>> >> > supporting >> > >>>> >> > > > > reuse >> > >>>> >> > > > > > >>>> sink >> > >>>> >> > > > > > >>>> > nodes in planner, the usability can be greatly >> > >>>> improved >> > >>>> >> in >> > >>>> >> > > this >> > >>>> >> > > > > > case. >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > Therefore, we propose to add a new option >> > >>>> >> > > > > > >>>> > *`table.optimizer.reuse-sink-enabled`* here to >> > >>>> support >> > >>>> >> this >> > >>>> >> > > > > feature. >> > >>>> >> > > > > > >>>> More >> > >>>> >> > > > > > >>>> > details can be found in the FLIP. >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > Looking forward to your feedback, thanks. >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > [1] >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >> > >>>> >> > > > > >> > >>>> >> > > > >> > >>>> >> > > >> > >>>> >> > >> > >>>> >> >> > >>>> >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-506%3A+Support+Reuse+Multiple+Table+Sinks+in+Planner >> > >>>> >> > > > > > >>>> > >> > >>>> >> > > > > > >>>> > Best regards, >> > >>>> >> > > > > > >>>> > Xiangyu Feng >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >>>> >> > >>>> >> > > > > > >> > >>>> >> > > > > >> > >>>> >> > > > >> > >>>> >> > > >> > >>>> >> > >> > >>>> >> >> > >>>> > >> > >>>> >> > >>> >> > >> >