Skip to content

[FLINK-39785][table] Add e2e tests for LateralSnapshotJoin#28713

Open
fhueske wants to merge 5 commits into
apache:masterfrom
confluentinc:fhueske-FLINK-39785-Add-LATERAL-SNAPSHOT-e2e-tests
Open

[FLINK-39785][table] Add e2e tests for LateralSnapshotJoin#28713
fhueske wants to merge 5 commits into
apache:masterfrom
confluentinc:fhueske-FLINK-39785-Add-LATERAL-SNAPSHOT-e2e-tests

Conversation

@fhueske

@fhueske fhueske commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

What is the purpose of the change

This PR adds end-2-end and restore tests for the LATERAL SNAPSHOT join.

This PR builds on the following PRs: #28329, #28664, and #28674.
Only the last two commits are part of this PR.

Brief change log

  • add LateralSnapshotJoinITCase
  • add LateralSnapshotJoinTestPrograms

Verifying this change

This is a tests-only PR.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): no
  • The public API, i.e., is any changed class annotated with @Public(Evolving): no
  • The serializers: no
  • The runtime per-record code paths (performance sensitive): no
  • Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
  • The S3 file system connector: no

Documentation

  • Does this pull request introduce a new feature? no
  • If yes, how is the feature documented? n/a

Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Generated-by: Claude Code 2.1.200 (Opus 4.8)

fhueske added 5 commits July 10, 2026 19:38
…OAD/JOIN execution

Stateful keyed two-input operator backing LATERAL SNAPSHOT joins.

* Two phases (LOAD/JOIN) gated by an operator UnionListState; mixed-phase
  rescale collapses to LOAD. Flip triggers: build-side WM reaches
  loadCompletedTime, or a processing-time idle-timeout fallback.
* Probe records are buffered in LOAD and joined on flip. Build-side changes
  are buffered per-key and applied lazily in event-time order on the next
  per-key access once the build-side WM advanced, preserving atomic -U/+U
  visibility.
* Watermarks: build-side absorbed; probe-side held back in LOAD, forwarded
  in JOIN. NULL equi-keys filtered via JoinConditionWithNullFilters.
* State TTL via keyed processing-time timers with a post-flip grace window;
  rearms are amortized so effective time-to-eviction is in
  [1.0×, 1.5×] stateTtlMs.

Generated-By: Claude Opus 4.7 (1M context)
… operator

Rewrites a join over a SNAPSHOT table function in a LATERAL clause into a
dedicated FlinkLogicalLateralSnapshotJoin and converts it to a
StreamPhysicalLateralSnapshotJoin / StreamExecLateralSnapshotJoin backed by the
LateralSnapshotJoinOperator. The nodes derive their own output row type
(materializing the build-side rowtime) and carry the SNAPSHOT arguments as
fields.

Generated-By: Claude Opus 4.8 (1M context)
Adds ForbidSnapshotOutsideLateralRule, which rejects any SNAPSHOT scan
that survives the LATERAL SNAPSHOT rewrite with a clear message instead
of failing later in the generic PTF translation.

Generated-By: Claude Opus 4.8 (1M context)
…h-down source

Wire the existing source.sleep-after-elements / source.sleep-time options into TestValuesScanTableSourceWithWatermarkPushDown

Generated-By: Claude Opus 4.8 (1M context)
Adds end-to-end coverage for the LATERAL SNAPSHOT processing-time temporal join:

* LateralSnapshotJoinITCase: result tests over HEAP and ROCKSDB backends covering different configurations and input scenarios
* LateralSnapshotJoinRestoreTest / LateralSnapshotJoinTestPrograms: savepoint restore tests

Generated-By: Claude Opus 4.8 (1M context)
@fhueske fhueske marked this pull request as ready for review July 10, 2026 17:46
@flinkbot

flinkbot commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

CI report:

Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants