Hi, Xiangyu

Thanks for the update.
+1 for the new interface name.

Best regards,

Weijie


Ron Liu <ron9....@gmail.com> 于2025年2月24日周一 19:25写道:

> 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
>>> > >>>> >> > > > > > >>>>
>>> > >>>> >> > > > > > >>>>
>>> > >>>> >> > > > > >
>>> > >>>> >> > > > >
>>> > >>>> >> > > >
>>> > >>>> >> > >
>>> > >>>> >> >
>>> > >>>> >>
>>> > >>>> >
>>> > >>>>
>>> > >>>
>>> >
>>>
>>

Reply via email to