Skip to content

[FLINK-39784][table] Forbid SNAPSHOT function outside LATERAL context#28674

Open
fhueske wants to merge 3 commits into
apache:masterfrom
confluentinc:fhueske-FLINK-39784-Forbid-SNAPSHOT-outside-LATERAL-context
Open

[FLINK-39784][table] Forbid SNAPSHOT function outside LATERAL context#28674
fhueske wants to merge 3 commits into
apache:masterfrom
confluentinc:fhueske-FLINK-39784-Forbid-SNAPSHOT-outside-LATERAL-context

Conversation

@fhueske

@fhueske fhueske commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What is the purpose of the change

This PR builds on #28664 (FLINK-39783). Only the commits tagged with FLINK-39784 are relevant for this PR.

Brief change log

  • add ForbidSnapshotOutsideLateralRule which throws an exception when it encounters a FlinkLogicalTableFunctionScan for a SNAPSHOT function.
  • add ForbidSnapshotOutsideLateralRule to LOGICAL_REWRITE RuleSet after LogicalJoinToLateralSnapshotJoinRule, ensuring that the new rule is applied for all SNAPSHOT functions that were not rewritten be earlier rule(s).
  • update a unit test to check on the new error message.

Verifying this change

  • updated the assertion of an existing test

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)

Co-authored-by: Claude Code 2.1.200 (Opus 4.8)

fhueske added 3 commits July 6, 2026 11:20
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)
@fhueske fhueske marked this pull request as ready for review July 7, 2026 10:22
@flinkbot

flinkbot commented Jul 7, 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