Hi Zihao,

Apologies for the late reply. My biggest concern is still around the
non-deterministic behavior. For RANDOM and NATURAL that's exactly what
they introduce, and I'm convinced we should be moving away from that,
not adding more of it: non-determinism makes stream processing so much
harder to reason about for a user. It causes all sorts of issues
around reprocessing, it breaks changelog processing semantics, and it
makes the entire NonDeterministicUpdate analysis (even more)
complicated.

KEY_BASED is deterministic so that argument doesn't apply, but it
still changes the result set with per-key boundaries, and I haven't
seen a concrete use case that actually wants that rather than it being
a side effect of load smoothing. I also don't think the global-offset
analogy holds here. A global offset shifts every window by the same
constant, so all keys keep identical boundaries and the result stays
deterministic and comparable across keys. A per-key stagger gives
different keys different boundaries, which is precisely the property a
global offset preserves and this does not. "Fixed-size and
non-overlapping" holds per key in both cases, but that's not the part
that's at stake.

That's also why I'd rather see the "future work" you mentioned:
stagger the emission while keeping the boundaries aligned, which keeps
the results stable and is a real physical optimization.

As a side note, FLINK-37655 proposes making WindowStagger pluggable at
the DataStream level and only has a single watcher, which makes me
question how much demand there is for this in the first place.

Best regards,
Martijn

Op ma 1 jun 2026 om 10:27 schreef zihao chen <[email protected]>:
>
> Hi Martijn,
>
> I hope you are doing well.
>
> I wanted to follow up on the revised proposal for STAGGER_TUMBLE
> that I shared last week. I am particularly interested to hear whether this
> updated direction addresses the concerns you raised about mixing
> physical concerns with logical semantics.
>
> Your feedback would be greatly appreciated. If you have any additional
> thoughts or suggestions, I would be happy to incorporate them.
>
> Thank you very much for your time and guidance.
>
> Best regards,
> Zihao
>
> Feng Jin <[email protected]> 于2026年5月25日周一 18:58写道:
>
> > Hi Zihao, Martijn,
> >
> >
> > +1 for introducing a new window type, as this is not a change to the
> > trigger mechanism itself, but rather a fundamental redefinition of how data
> > is partitioned into windows.
> >
> >
> > Best,
> >
> > Feng
> >
> >
> >
> >
> >
> > On Sat, May 23, 2026 at 12:07 PM zihao chen <[email protected]> wrote:
> >
> > > Hi Martijn,
> > >
> > > Thanks for your insightful feedback and careful review.
> > >
> > > Your point about avoiding the mixing of physical concerns with
> > > logical semantics makes perfect sense, and it prompted me to rethink
> > > the design more thoroughly.
> > >
> > > I would like to share an updated direction below and see whether this
> > > aligns better with your expectations.
> > > 1. Original Proposal — Withdrawn
> > >
> > > I initially proposed extending the existing TUMBLE window with an
> > > optional STAGGER parameter, inspired by the existing DataStream
> > > WindowStagger, which shifts window boundaries.
> > >
> > > However, I agree with your analysis that doing so in SQL would
> > > silently break the deterministic alignment contract of TUMBLE.
> > >
> > > Therefore, I would like to withdraw this part of the proposal.
> > > 2. Hints and PTF — Deferred for Now
> > >
> > >    - Regarding Hints
> > >
> > > I agree that a hint is probably not the right abstraction here.
> > Staggering
> > > changes the resulting window boundaries, while hints in
> > >
> > > Flink are generally treated as plan-intervention mechanisms that do
> > >
> > > not alter query semantics.
> > >
> > > In addition, there is currently no precedent for window-related hints
> > >
> > > in Flink SQL.
> > >
> > >
> > >    - Regarding PTF (Process Table Functions)
> > >
> > > I agree that PTF could ultimately become a powerful extension point
> > >
> > > for custom or user-defined windows.
> > >
> > > However, building a comprehensive PTF-based windowing framework is
> > >
> > > itself a substantial design effort and likely deserves a dedicated
> > >
> > > discussion.
> > >
> > > To keep the scope of this FLIP manageable, I would prefer to leave
> > >
> > > PTF integration as future work for now.
> > >
> > > ------------------------------
> > > 3. Revised Proposal — Introduce a New TVF:STAGGER_TUMBLE
> > >
> > > Since staggering fundamentally changes the window definition, I now
> > > believe it should be treated as a logical semantic change rather than
> > > a pure physical optimization.
> > >
> > > Therefore, instead of modifying TUMBLE, the cleaner approach would
> > > be to introduce a separate TVF with an explicit contract:
> > >
> > > STAGGER_TUMBLE(
> > >     TABLE data,
> > >     DESCRIPTOR(timecol),
> > >     size,
> > >     stagger_strategy
> > > )
> > >
> > > -- stagger_strategy:
> > > --   'RANDOM'
> > > --   'NATURAL'
> > > --   'KEY_BASED'
> > >
> > > For KEY_BASED, the requirement of a keyed context (for example,
> > > Window Aggregation with GROUP BY) would be validated at compile
> > > time.
> > >
> > > Key properties of this approach:
> > >
> > >    -
> > >
> > >    *Zero impact on TUMBLE*
> > >
> > >    The semantic contract of the existing TUMBLE TVF remains fully
> > >    preserved.
> > >    -
> > >
> > >    *Explicit semantics*
> > >
> > >    STAGGER_TUMBLE would define its own semantics explicitly,
> > >    including that window boundaries may vary depending on the selected
> > >    stagger strategy.
> > >
> > > ------------------------------
> > > 4. Future Work
> > >
> > > A potentially cleaner long-term direction may be to separate:
> > >
> > >    -
> > >
> > >    logical window boundary assignment, and
> > >    -
> > >
> > >    physical emission scheduling
> > >
> > > In other words, preserving perfectly aligned window boundaries while
> > > staggering only the emission timing.
> > >
> > > That would constitute a true physical optimization without changing
> > > query results.
> > >
> > > This could potentially evolve into an optional parameter such as
> > > shift_window_boundary in STAGGER_TUMBLE, and can be explored in a
> > > follow-up FLIP.
> > > ------------------------------
> > >
> > > Does this revised direction address your core concerns?
> > >
> > > I would also greatly appreciate feedback from others on the mailing
> > > list.
> > >
> > > If there is general consensus around this direction, I will update
> > > the FLIP document accordingly. Otherwise, I am happy to continue
> > > iterating on the design.
> > >
> > > Best regards,
> > >
> > > Zihao
> > >
> > > Martijn Visser <[email protected]> 于2026年5月21日周四 01:05写道:
> > >
> > > > Hi Zihao,
> > > >
> > > > Thanks for the FLIP. I am worried that the proposal is mixing physical
> > > > concerns (the downstream bursts of data) into logical semantics. I
> > > > think a more natural escape hatch are hints. I also think that
> > > > KEY_BASED is not really a physical optimization anyway, since it
> > > > shifts window_start / window_end values in the output and therefore
> > > > changes the result set. That makes it a poor fit for both a TVF
> > > > argument and a hint, and probably a better fit for a PTF where the
> > > > user explicitly owns the boundary assignment function.
> > > >
> > > > Looking forward to your thoughts.
> > > >
> > > > Best regards,
> > > >
> > > > Martijn
> > > >
> > > > Op wo 20 mei 2026 om 14:32 schreef rocxing <[email protected]>:
> > > > >
> > > > > Hi Zihao and all,
> > > > >
> > > > >
> > > > > Thanks a lot for this practical proposal.
> > > > > This is a valuable feature for Flink SQL users, and we have also
> > > > encountered exactly the same pain points in our production
> > environments.
> > > > > Furthermore, the KEY_BASED deterministic stagger strategy is a good
> > way
> > > > to eliminate non-determinism problems.
> > > > >
> > > > >
> > > > > Best regards,
> > > > > Pengxiang Wang
> > > >
> > >
> >

Reply via email to