Adding @Yuepeng @Martijn

On Mon, Mar 10, 2025 at 7:36 PM Weiqing Yang <[email protected]>
wrote:

> Hi Becket,
>
> Thanks for the feedback! I’ve updated the design doc with a new
> “Granularity of the Early Fire Hint” section: link
> <https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0#heading=h.gle8q83bjlj5>
> .
>
> Here’s a quick summary:
>
>    - EARLY_FIRE is scoped to a single operator. If multiple operators in
>    one query can support early firing, Flink applies the hint to the first
>    matching operator and logs a warning to highlight the ambiguity. Subsequent
>    operators will not receive the hint.
>    - Split queries for different early-fire settings. If you need
>    separate early-fire configurations - or just want to avoid ambiguity -
>    splitting the SQL into multiple statements or views ensures each operator
>    has its own distinct EARLY_FIRE hint.
>
> Please let me know if you have any other questions or suggestions.
>
> Best,
> Weiqing
>
> On Fri, Feb 28, 2025 at 5:01 PM Becket Qin <[email protected]> wrote:
>
>> Thanks for updating the FLIP, Weiqing.
>>
>> Another question, what is the granularity of the early fire hint? Will the
>> hint be applied to all the outer joins in the same block? What if in the
>> query block there are also aggregations? For example:
>>
>> SELECT window_start, window_end, buyer, count(*) /*+
>> EARLY_FIRE('delay'='5s'
>> , 'time_mode'='rowtime|proctime') */
>> FROM Orders o LEFT JOIN Shipments s
>> WHERE o.id = s.order_id
>> AND o.order_time BETWEEN s.ship_time - INTERVAL '4' HOUR AND s.ship_time
>> GROUP BY o.window_start, o.window_end, buyer;
>>
>> What will be the behavior? Will both the aggregation and interval join? Or
>> will it only be applied to the join?
>> It would be useful to define the behavior here.
>>
>> Thanks,
>>
>> Jiangjie (Becket) Qin
>>
>> On Thu, Feb 27, 2025 at 2:31 PM Weiqing Yang <[email protected]>
>> wrote:
>>
>> > Thanks for the feedback, Becket. I’ve heard similar concerns from other
>> > reviewers, and I now agree that the `interval` option is likely not
>> widely
>> > used. In the FLIP, it was intended specifically for Interval Join, not
>> as a
>> > general early-fire mechanism. We can consider making it more generic in
>> a
>> > future update. Since it’s optional, I’ll go ahead and remove it for
>> > clarity.
>> >
>> >  Appreciate your input!
>> >
>> > Best,
>> > Weiqing
>> >
>> > On Wed, Feb 19, 2025 at 9:46 AM Becket Qin <[email protected]>
>> wrote:
>> >
>> > > Sorry for the late reply. I have a question regarding the
>> configuration
>> > of
>> > > interval. I am wondering in which scenario the interval config will
>> > > actually be used. Is the interval configuration only useful for
>> windowed
>> > > aggregation?
>> > >
>> > > For the join operations, early fire seems only applicable to the outer
>> > join
>> > > before there is a match. Once there is a match, the output of the join
>> > > operation should be just event driven. For example, consider the
>> > following
>> > > scenario:
>> > > 1. left outer join, and there is no match from the right side before
>> the
>> > > initial delay
>> > > 2. a record [left, null] was emitted due to early fire
>> > > 3. one of the following two cases must happen
>> > >     a. there is still no match event from the right side before the
>> > > specific interval passes. In this case, we are not supposed to emit
>> > another
>> > > [left, null].
>> > >     b. if there is a match, a record of [left, right] should be
>> emitted
>> > > immediately regardless of the interval. If this happens, the interval
>> > will
>> > > be ignored from this point on.
>> > >
>> > > That said, if the configuration proposed in this FLIP is intended not
>> > only
>> > > for join, but for general purpose early fire, then the interval config
>> > > makes sense.
>> > >
>> > > Thanks,
>> > >
>> > > Jiangjie (Becket) Qin
>> > >
>> > > On Mon, Jan 27, 2025 at 1:56 PM Weiqing Yang <
>> [email protected]>
>> > > wrote:
>> > >
>> > > > Thank you all for reviewing. As there are no objections, I’ll move
>> > > forward
>> > > > with a vote.
>> > > >
>> > > > Best regards,
>> > > > Weiqing
>> > > >
>> > > > On Mon, Jan 27, 2025 at 9:30 AM Venkatakrishnan Sowrirajan <
>> > > > [email protected]>
>> > > > wrote:
>> > > >
>> > > > > Same here, I don't have any more questions. Thanks!
>> > > > >
>> > > > > On Sat, Jan 25, 2025, 10:10 PM Xingcan Cui <[email protected]>
>> > wrote:
>> > > > >
>> > > > > > Hi Weiqing,
>> > > > > >
>> > > > > > I don't have any more questions. The doc looks good to me.
>> > > > > >
>> > > > > > Thanks,
>> > > > > > Xingcan
>> > > > > >
>> > > > > > On Wed, Jan 22, 2025 at 8:46 PM Venkatakrishnan Sowrirajan <
>> > > > > > [email protected]>
>> > > > > > wrote:
>> > > > > >
>> > > > > > > Hi Weiqing,
>> > > > > > >
>> > > > > > > Thanks, that makes sense! Looks like I missed it.
>> > > > > > >
>> > > > > > > Regards
>> > > > > > > Venkata krishnan
>> > > > > > >
>> > > > > > >
>> > > > > > > On Tue, Jan 21, 2025 at 10:55 PM Weiqing Yang <
>> > > > > [email protected]>
>> > > > > > > wrote:
>> > > > > > >
>> > > > > > > > Hi Venkata,
>> > > > > > > >
>> > > > > > > > * > where only one earlyFire is fired The DELAY *
>> > > > > > > >
>> > > > > > > > The DELAY option mentioned in the Public Interfaces section
>> > > > > > > > <
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.yp9ng89zwc1z__;Iw!!IKRxdwAv5BmarQ!cSzLIiXfVEVa9ClafsAoHYeOAxXCu5Em4XlW-MWWjtCsDAVCONBJEwxQ6kFXaCHxOtpVR7w6siu_q7x6HZbUtXqs8qQL$
>> > > > > > > > >
>> > > > > > > > of the proposal can produce a single early fire per
>> interval,
>> > > > > aligning
>> > > > > > > with
>> > > > > > > > your suggestion. How it integrates with existing early-fire
>> > > > > > > configurations
>> > > > > > > > are mentioned here
>> > > > > > > > <
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.rr0i3gmdjt4q__;Iw!!IKRxdwAv5BmarQ!cSzLIiXfVEVa9ClafsAoHYeOAxXCu5Em4XlW-MWWjtCsDAVCONBJEwxQ6kFXaCHxOtpVR7w6siu_q7x6HZbUtcJ04z2O$
>> > > > > > > > >.
>> > > > > > > > Let me know if you have any further questions or feedback!
>> > > > > > > >
>> > > > > > > > Thanks,
>> > > > > > > > Weiqing
>> > > > > > > >
>> > > > > > > > On Tue, Jan 21, 2025 at 11:30 AM Venkatakrishnan Sowrirajan
>> <
>> > > > > > > > [email protected]> wrote:
>> > > > > > > >
>> > > > > > > > > Thanks for the response!
>> > > > > > > > >
>> > > > > > > > > > If the optional `interval` in the proposal is enabled,
>> > > > early-fire
>> > > > > > > > outputs
>> > > > > > > > > will occur repeatedly at every earlyFireInterval, not just
>> > > once.
>> > > > > > After
>> > > > > > > > that
>> > > > > > > > > interval concludes, there will also be a final emission.
>> > > > > > > > >
>> > > > > > > > > One more question, would it make sense to support a
>> mechanism
>> > > > > through
>> > > > > > > > > configuration where only one earlyFire is fired for an
>> > interval
>> > > > or
>> > > > > > > > window?
>> > > > > > > > > This would also simplify the state overhead for use cases
>> > where
>> > > > > only
>> > > > > > > one
>> > > > > > > > > early fire is required within a window or interval.
>> Thoughts?
>> > > > > > > > >
>> > > > > > > > > Regards
>> > > > > > > > > Venkata krishnan
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > > On Mon, Jan 20, 2025 at 9:11 PM Weiqing Yang <
>> > > > > > [email protected]
>> > > > > > > >
>> > > > > > > > > wrote:
>> > > > > > > > >
>> > > > > > > > > > Hi Venkata,
>> > > > > > > > > >
>> > > > > > > > > > Thanks for your feedback!
>> > > > > > > > > >
>> > > > > > > > > > If the optional `interval` in the proposal is enabled,
>> > > > early-fire
>> > > > > > > > outputs
>> > > > > > > > > > will occur repeatedly at every earlyFireInterval, not
>> just
>> > > > once.
>> > > > > > > After
>> > > > > > > > > that
>> > > > > > > > > > interval concludes, there will also be a final emission.
>> > > > > > > > > >
>> > > > > > > > > > We haven’t included a late-fire mechanism for interval
>> > joins
>> > > in
>> > > > > > this
>> > > > > > > > > FLIP,
>> > > > > > > > > > but it’s certainly something we can consider for future
>> > > > efforts!
>> > > > > > > > > >
>> > > > > > > > > > Best regards,
>> > > > > > > > > > Weiqing
>> > > > > > > > > >
>> > > > > > > > > > On Thu, Jan 16, 2025 at 3:27 PM Venkatakrishnan
>> Sowrirajan
>> > <
>> > > > > > > > > > [email protected]>
>> > > > > > > > > > wrote:
>> > > > > > > > > >
>> > > > > > > > > > > Weiqing,
>> > > > > > > > > > >
>> > > > > > > > > > > Thanks, this is a great addition to Flink SQL. Also
>> > instead
>> > > > of
>> > > > > > > > > > controlling
>> > > > > > > > > > > and configuring through Flink configs unlike the older
>> > > window
>> > > > > > > > > > aggregation,
>> > > > > > > > > > > hints seems to be a much better approach. This
>> enables a
>> > > > > > > customizable
>> > > > > > > > > > early
>> > > > > > > > > > > fire behavior for individual interval joins.
>> > > > > > > > > > >
>> > > > > > > > > > > Couple of questions:
>> > > > > > > > > > >
>> > > > > > > > > > > 1. Does the *early fire* emit an output every
>> > > > earlyFireInterval
>> > > > > > > time
>> > > > > > > > or
>> > > > > > > > > > > will it be a one time output emission and another
>> output
>> > > > > emitted
>> > > > > > at
>> > > > > > > > the
>> > > > > > > > > > end
>> > > > > > > > > > > of the interval?
>> > > > > > > > > > > 2. Are there plans to support *late fire *similar to
>> the
>> > > > window
>> > > > > > > > > > > aggregations in later FLIPs?
>> > > > > > > > > > >
>> > > > > > > > > > > Regards
>> > > > > > > > > > > Venkata krishnan
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > On Wed, Jan 15, 2025 at 6:16 PM Weiqing Yang <
>> > > > > > > > [email protected]
>> > > > > > > > > >
>> > > > > > > > > > > wrote:
>> > > > > > > > > > >
>> > > > > > > > > > > > Thanks for reviewing, Xuyang!
>> > > > > > > > > > > >
>> > > > > > > > > > > > Xingcan (@[email protected]) – do you have any
>> > > concerns?
>> > > > > > > > > > > >
>> > > > > > > > > > > > If no further objections arise from anyone, I’ll
>> > proceed
>> > > to
>> > > > > > mark
>> > > > > > > > FLIP
>> > > > > > > > > > as
>> > > > > > > > > > > > ready for voting.
>> > > > > > > > > > > >
>> > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > Weiqing
>> > > > > > > > > > > >
>> > > > > > > > > > > > On Tue, Jan 14, 2025 at 9:06 PM Xuyang <
>> > > [email protected]
>> > > > >
>> > > > > > > wrote:
>> > > > > > > > > > > >
>> > > > > > > > > > > > > LGTM overall. Thanks for updating. I have no
>> problem
>> > > and
>> > > > +1
>> > > > > > for
>> > > > > > > > > this
>> > > > > > > > > > > > > feature.
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > --
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >     Best!
>> > > > > > > > > > > > >     Xuyang
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > 在 2025-01-15 12:33:16,"Weiqing Yang" <
>> > > > > > [email protected]
>> > > > > > > >
>> > > > > > > > > 写道:
>> > > > > > > > > > > > > >Hi Xuyang,
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >Thank you for your detailed feedback! I’ve
>> updated
>> > the
>> > > > > > > proposal
>> > > > > > > > > doc
>> > > > > > > > > > > > > >accordingly. Please feel free to take another
>> look
>> > and
>> > > > let
>> > > > > > me
>> > > > > > > > know
>> > > > > > > > > > if
>> > > > > > > > > > > > you
>> > > > > > > > > > > > > >have any further thoughts or suggestions.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >Best regards,
>> > > > > > > > > > > > > >Weiqing
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >On Mon, Jan 13, 2025 at 3:50 AM Xuyang <
>> > > > > [email protected]>
>> > > > > > > > > wrote:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >> Hi, Weiqing.
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> After reading the new FLIP, I have no issues
>> with
>> > > the
>> > > > > part
>> > > > > > > > > `public
>> > > > > > > > > > > > > >> interface`. I only have some questions
>> regarding
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> the details in the Proposed Changes section.
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> Regarding the ModifyKind and UpdateKind of the
>> > > > > > IntervalJoin
>> > > > > > > > > node,
>> > > > > > > > > > > > IIUC:
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> - When early firing is enabled, the UpdateKind
>> of
>> > > the
>> > > > > > > > > IntervalJoin
>> > > > > > > > > > > can
>> > > > > > > > > > > > > be
>> > > > > > > > > > > > > >> either ONLY_UPDATE_AFTER or
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> degrade to BEFORE_AND_AFTER, depending
>> entirely on
>> > > the
>> > > > > > > > > > requirements
>> > > > > > > > > > > of
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > >> sink. And the ModifyKind is always ALL.
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> - When early firing is disabled, the
>> UpdateKind of
>> > > the
>> > > > > > > > > > IntervalJoin
>> > > > > > > > > > > is
>> > > > > > > > > > > > > >> NONE, and the ModifyKind is INSERT.
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> - Nevertheless, whether early firing is
>> enabled or
>> > > > > > disabled,
>> > > > > > > > the
>> > > > > > > > > > > > > >> IntervalJoin should always require its input to
>> > keep
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> ModifyKind with INSERT_ONLY and UpdateKind with
>> > > NONE.
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> --
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>     Best!
>> > > > > > > > > > > > > >>     Xuyang
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > > >> At 2025-01-09 15:30:44, "Weiqing Yang" <
>> > > > > > > > > [email protected]>
>> > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > >> >Hi Xingcan and Xuyang,
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >Thanks so much for the feedback - it was very
>> > > > helpful!
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >*> 1. The current output stream of a time
>> > interval
>> > > > > outer
>> > > > > > > join
>> > > > > > > > > is
>> > > > > > > > > > an
>> > > > > > > > > > > > > >> >append-only stream. This change will make it a
>> > > > > potential
>> > > > > > > > > > > retractable
>> > > > > > > > > > > > > >> >stream. I'm not sure if the planner supports a
>> > > > dynamic
>> > > > > > > output
>> > > > > > > > > > type
>> > > > > > > > > > > > like
>> > > > > > > > > > > > > >> >that. Could you add this part to your design
>> > doc?*
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   - Yes, enabling early firing on time
>> interval
>> > > > outer
>> > > > > > > joins
>> > > > > > > > > can
>> > > > > > > > > > > emit
>> > > > > > > > > > > > > >> >   retractions when previously emitted rows
>> are
>> > > > updated
>> > > > > > or
>> > > > > > > > > > > > invalidated
>> > > > > > > > > > > > > by
>> > > > > > > > > > > > > >> >   later matches. I’ve updated the proposal
>> > > (Planner
>> > > > > > > > Awareness
>> > > > > > > > > > > > > >> >   <
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.y5w17oloacws__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-WAM59Os$
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   and Changes in
>> > > FlinkChangelogModeInferenceProgram
>> > > > > > > > > > > > > >> >   <
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.z6qdwrvtgn4u__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-Y5SiJXB$
>> > > > > > > > > > > > > >> >)
>> > > > > > > > > > > > > >> >   to clarify that the stream might switch
>> from
>> > > > > > append-only
>> > > > > > > > to
>> > > > > > > > > a
>> > > > > > > > > > > > > >> >   retract/upsert stream. Let me know if
>> anything
>> > > is
>> > > > > > > missing.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >*> 2. What's the use case when the downstream
>> > > > > components
>> > > > > > > need
>> > > > > > > > > to
>> > > > > > > > > > > get
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > >> >early fired results regularly?*
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   - The new INTERVAL option (in addition to
>> > DELAY)
>> > > > > > allows
>> > > > > > > > > > periodic
>> > > > > > > > > > > > > >> updates
>> > > > > > > > > > > > > >> >   (e.g., every 10 minutes) after the initial
>> > > delay.
>> > > > > This
>> > > > > > > > > > captures
>> > > > > > > > > > > > how
>> > > > > > > > > > > > > >> results
>> > > > > > > > > > > > > >> >   evolve over time, similar to Apache Beam’s
>> > > > > > “Repeatedly”
>> > > > > > > > > > option.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >*> 3. The time interval join operator itself
>> is
>> > not
>> > > > > quite
>> > > > > > > > > > efficient
>> > > > > > > > > > > > > when
>> > > > > > > > > > > > > >> >the state becomes large. Will there be any
>> extra
>> > > > > overhead
>> > > > > > > > after
>> > > > > > > > > > > > > >> introducing
>> > > > > > > > > > > > > >> >this feature?*
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   - Early fire does introduce some overhead
>> by
>> > > > > > potentially
>> > > > > > > > > > > emitting
>> > > > > > > > > > > > > >> >   partial matches multiple times with
>> retraction
>> > > > > > (avoiding
>> > > > > > > > > > > duplicate
>> > > > > > > > > > > > > >> outputs
>> > > > > > > > > > > > > >> >   though). However, if it’s disabled, there
>> is
>> > no
>> > > > > > > additional
>> > > > > > > > > > cost.
>> > > > > > > > > > > > > Most
>> > > > > > > > > > > > > >> users
>> > > > > > > > > > > > > >> >   find the performance trade-off acceptable
>> for
>> > > the
>> > > > > > > > real-time
>> > > > > > > > > > > > > insights it
>> > > > > > > > > > > > > >> >   provides.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >*> 1. Currently, there are some configs
>> related
>> > to
>> > > > > early
>> > > > > > > > firing
>> > > > > > > > > > > > > available
>> > > > > > > > > > > > > >> >to users:
>> `table.exec.emit.early-fire.en**abled`
>> > > and
>> > > > > > > > > > > > > >> >`table.exec.emit.early-fire.de <
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__http://table.exec.emit.early-fire.de__;!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-dmB0JB7$
>> > > > > > > > > > > > > >> >**lay`.
>> > > > > > > > > > > > > >> >Although their documentation states that they
>> are
>> > > > only
>> > > > > > > > > applicable
>> > > > > > > > > > > to
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > >> >Window operator, it seems possible that they
>> may
>> > > also
>> > > > > be
>> > > > > > > > > relevant
>> > > > > > > > > > > in
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > >> >context of this FLIP. Otherwise, having
>> different
>> > > > early
>> > > > > > > > firing
>> > > > > > > > > > > > > behaviors
>> > > > > > > > > > > > > >> >for different operators could confuse users.*
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   - +1 on unifying early-fire behaviors to
>> avoid
>> > > > > > > confusion.
>> > > > > > > > > I’ve
>> > > > > > > > > > > > > added a
>> > > > > > > > > > > > > >> >   section
>> > > > > > > > > > > > > >> >   <
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.rr0i3gmdjt4q__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-cs7f7P2$
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >in
>> > > > > > > > > > > > > >> >   the proposal highlighting that we should
>> align
>> > > > > > > hint-based
>> > > > > > > > > > > interval
>> > > > > > > > > > > > > join
>> > > > > > > > > > > > > >> >   configurations with the existing
>> > > table.exec.emit.*
>> > > > > > > > settings.
>> > > > > > > > > > > > > >> Suggestions
>> > > > > > > > > > > > > >> >   on how to make the unification are
>> welcome! We
>> > > > plan
>> > > > > to
>> > > > > > > > > extend
>> > > > > > > > > > > > early
>> > > > > > > > > > > > > >> firing
>> > > > > > > > > > > > > >> >   to window joins via hints in a future FLIP.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >*> 2. The design of `time_mode` is excellent.
>> > > Similar
>> > > > > to
>> > > > > > > > point
>> > > > > > > > > 1,
>> > > > > > > > > > > > > perhaps
>> > > > > > > > > > > > > >> >we can introduce it to other window-related
>> > > operators
>> > > > > in
>> > > > > > > the
>> > > > > > > > > > > future.>
>> > > > > > > > > > > > > 3.
>> > > > > > > > > > > > > >> >You need to modify the
>> > > > > FlinkChangelogModeInferenceProgram
>> > > > > > > to
>> > > > > > > > > > ensure
>> > > > > > > > > > > > > that
>> > > > > > > > > > > > > >> >downstream nodes of interval joins with early
>> > > firing
>> > > > > > > enabled
>> > > > > > > > > are
>> > > > > > > > > > > > aware
>> > > > > > > > > > > > > of
>> > > > > > > > > > > > > >> >retract or upsert messages.*
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   - We agree that time_mode could be
>> introduced
>> > to
>> > > > > other
>> > > > > > > > > > > > window-based
>> > > > > > > > > > > > > >> >   operators down the road. We also want to
>> > support
>> > > > > early
>> > > > > > > > fire
>> > > > > > > > > > for
>> > > > > > > > > > > > > >> >   window join. Also, thanks for highlighting
>> > > > > > > > > > > > > >> >   FlinkChangelogModeInferenceProgram! I added
>> > the
>> > > > code
>> > > > > > > > change
>> > > > > > > > > on
>> > > > > > > > > > > it
>> > > > > > > > > > > > > >> >   <
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.z6qdwrvtgn4u__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-Y5SiJXB$
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >   in the proposal.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >Thanks again for your time and feedback! I’ve
>> > > updated
>> > > > > the
>> > > > > > > > > > proposal
>> > > > > > > > > > > > with
>> > > > > > > > > > > > > >> >these points. Please let me know if there’s
>> > > anything
>> > > > > > else I
>> > > > > > > > > > should
>> > > > > > > > > > > > > >> address.
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >Best,
>> > > > > > > > > > > > > >> >Weiqing
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >On Mon, Jan 6, 2025 at 6:32 PM Xuyang <
>> > > > > > [email protected]>
>> > > > > > > > > > wrote:
>> > > > > > > > > > > > > >> >
>> > > > > > > > > > > > > >> >> Hi, Weiqing. Thank you for drafting this
>> FLIP.
>> > I
>> > > > > have a
>> > > > > > > few
>> > > > > > > > > > > > > questions:
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> 1. Currently, there are some configs
>> related to
>> > > > early
>> > > > > > > > firing
>> > > > > > > > > > > > > available
>> > > > > > > > > > > > > >> to
>> > > > > > > > > > > > > >> >> users: `table.exec.emit.early-fire.enabled`
>> and
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> `table.exec.emit.early-fire.delay`. Although
>> > > their
>> > > > > > > > > > documentation
>> > > > > > > > > > > > > states
>> > > > > > > > > > > > > >> >> that they are only applicable to the Window
>> > > > operator,
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> it seems possible that they may also be
>> > relevant
>> > > in
>> > > > > the
>> > > > > > > > > context
>> > > > > > > > > > > of
>> > > > > > > > > > > > > this
>> > > > > > > > > > > > > >> >> FLIP. Otherwise, having different early
>> firing
>> > > > > > behaviors
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> for different operators could confuse users.
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> 2. The design of `time_mode` is excellent.
>> > > Similar
>> > > > to
>> > > > > > > point
>> > > > > > > > > 1,
>> > > > > > > > > > > > > perhaps
>> > > > > > > > > > > > > >> we
>> > > > > > > > > > > > > >> >> can introduce it to other window-related
>> > > operators
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> in the future.
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> 3. You need to modify the
>> > > > > > > > FlinkChangelogModeInferenceProgram
>> > > > > > > > > to
>> > > > > > > > > > > > > ensure
>> > > > > > > > > > > > > >> >> that downstream nodes of interval joins with
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> early firing enabled are aware of retract or
>> > > upsert
>> > > > > > > > messages.
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> --
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>     Best!
>> > > > > > > > > > > > > >> >>     Xuyang
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >> >> At 2025-01-07 06:35:51, "Xingcan Cui" <
>> > > > > > > [email protected]>
>> > > > > > > > > > > wrote:
>> > > > > > > > > > > > > >> >> >Hi Weiqing,
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >Thanks for the proposal. IMO, adding early
>> > fire
>> > > > for
>> > > > > > time
>> > > > > > > > > > > interval
>> > > > > > > > > > > > > outer
>> > > > > > > > > > > > > >> >> >joins is feasible overall. I have a few
>> > > questions.
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >1. The current output stream of a time
>> > interval
>> > > > > outer
>> > > > > > > join
>> > > > > > > > > is
>> > > > > > > > > > an
>> > > > > > > > > > > > > >> >> >append-only stream. This change will make
>> it a
>> > > > > > potential
>> > > > > > > > > > > > retractable
>> > > > > > > > > > > > > >> >> >stream. I'm not sure if the planner
>> supports a
>> > > > > dynamic
>> > > > > > > > > output
>> > > > > > > > > > > type
>> > > > > > > > > > > > > like
>> > > > > > > > > > > > > >> >> >that. Could you add this part to your
>> design
>> > > doc?
>> > > > > > > > > > > > > >> >> >2. What's the use case when the downstream
>> > > > > components
>> > > > > > > need
>> > > > > > > > > to
>> > > > > > > > > > > get
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > >> >> early
>> > > > > > > > > > > > > >> >> >fired results regularly?
>> > > > > > > > > > > > > >> >> >3. The time interval join operator itself
>> is
>> > not
>> > > > > quite
>> > > > > > > > > > efficient
>> > > > > > > > > > > > > when
>> > > > > > > > > > > > > >> the
>> > > > > > > > > > > > > >> >> >state becomes large. Will there be any
>> extra
>> > > > > overhead
>> > > > > > > > after
>> > > > > > > > > > > > > introducing
>> > > > > > > > > > > > > >> >> >this feature?
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >Thanks,
>> > > > > > > > > > > > > >> >> >Xingcan
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >On Mon, Jan 6, 2025 at 4:11 PM Weiqing
>> Yang <
>> > > > > > > > > > > > > [email protected]>
>> > > > > > > > > > > > > >> >> >wrote:
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >> Hi all,
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> Just a gentle reminder regarding the
>> > proposal
>> > > I
>> > > > > > shared
>> > > > > > > > on
>> > > > > > > > > > > early
>> > > > > > > > > > > > > fire
>> > > > > > > > > > > > > >> >> >> support for Flink SQL interval joins. I’d
>> > > > greatly
>> > > > > > > > > appreciate
>> > > > > > > > > > > > your
>> > > > > > > > > > > > > >> >> feedback
>> > > > > > > > > > > > > >> >> >> or suggestions.
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> Here’s the link to the proposal document:
>> > Link
>> > > > > > > > > > > > > >> >> >> <
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.z7bl0h2hwkph__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-ZfECmzD$
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> Thank you!
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> Best,
>> > > > > > > > > > > > > >> >> >> Weiqing
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> On Sun, Dec 22, 2024 at 11:19 PM Weiqing
>> > Yang
>> > > <
>> > > > > > > > > > > > > >> [email protected]
>> > > > > > > > > > > > > >> >> >
>> > > > > > > > > > > > > >> >> >> wrote:
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >> >> > Hi all,
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> > I’d like to initiate a discussion about
>> > > > > > introducing
>> > > > > > > > > early
>> > > > > > > > > > > fire
>> > > > > > > > > > > > > >> support
>> > > > > > > > > > > > > >> >> >> for
>> > > > > > > > > > > > > >> >> >> > Flink SQL interval joins.
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> > *Motivation*
>> > > > > > > > > > > > > >> >> >> > In many streaming applications,
>> > particularly
>> > > > > > > real-time
>> > > > > > > > > > > > analytics
>> > > > > > > > > > > > > >> and
>> > > > > > > > > > > > > >> >> >> > monitoring systems, it is valuable to
>> > obtain
>> > > > > > partial
>> > > > > > > > > > results
>> > > > > > > > > > > > > >> earlier
>> > > > > > > > > > > > > >> >> >> rather
>> > > > > > > > > > > > > >> >> >> > than waiting for full join conditions
>> to
>> > > > > finalize.
>> > > > > > > For
>> > > > > > > > > > Flink
>> > > > > > > > > > > > SQL
>> > > > > > > > > > > > > >> >> interval
>> > > > > > > > > > > > > >> >> >> > joins, results are typically delayed
>> until
>> > > > > > > watermarks
>> > > > > > > > > > ensure
>> > > > > > > > > > > > no
>> > > > > > > > > > > > > >> more
>> > > > > > > > > > > > > >> >> >> > matches can occur. This delay can be
>> > > > challenging
>> > > > > > for
>> > > > > > > > > > > scenarios
>> > > > > > > > > > > > > that
>> > > > > > > > > > > > > >> >> >> require
>> > > > > > > > > > > > > >> >> >> > fast feedback. Early fire support
>> > addresses
>> > > > this
>> > > > > > by
>> > > > > > > > > > emitting
>> > > > > > > > > > > > > >> >> intermediate
>> > > > > > > > > > > > > >> >> >> > results speculatively and using
>> > retractions
>> > > or
>> > > > > > > updates
>> > > > > > > > > to
>> > > > > > > > > > > > > maintain
>> > > > > > > > > > > > > >> >> >> eventual
>> > > > > > > > > > > > > >> >> >> > consistency and ensure correctness.
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> > Here’s the proposal document: Link
>> > > > > > > > > > > > > >> >> >> > <
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://urldefense.com/v3/__https://docs.google.com/document/d/1YobpNdnvzSsceniVj4NZWi445gb1-54Rox-D7nPArZo/edit?tab=t.0*heading=h.z7bl0h2hwkph__;Iw!!IKRxdwAv5BmarQ!amkTjCPG108LnMxlN_eVP1GHgJpGNcvNJWSNr3NMfIoj0hTe4LvEKnFk0_gDXV0W-hozAXm9Kxw9VrlRT3jQ-ZfECmzD$
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> > Your feedback and ideas are welcome to
>> > > refine
>> > > > > this
>> > > > > > > > > > feature.
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >> > Thanks,
>> > > > > > > > > > > > > >> >> >> > Weiqing
>> > > > > > > > > > > > > >> >> >> >
>> > > > > > > > > > > > > >> >> >>
>> > > > > > > > > > > > > >> >>
>> > > > > > > > > > > > > >>
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to