gyfora opened a new pull request, #29011: URL: https://github.com/apache/flink/pull/29011
## What is the purpose of the change This is the second part of the code contribution for the [FLIP-599 State Catalog](https://cwiki.apache.org/confluence/spaces/FLINK/pages/438009922/FLIP-599+State+Catalog) The StateCatalog can already expose plain keyed state from a savepoint as queryable tables. This PR extends that support to namespaced keyed state — most commonly window state — so state kept per (key, window) pair can also be discovered and queried as a table through the StateCatalog, instead of only being reachable via the lower-level SavepointReader API. ## Brief change log - Added the schema-extraction and table-building utilities needed to describe namespaced keyed state as a catalog table, mirroring the existing utilities for plain keyed state. - Wired the new window tables into StateCatalog and SavepointDynamicTableSourceFactory, adding two new table shapes: simple keyed window table, flattened window table (similar to keyed states) - Added the readers/operators needed to pull namespaced state out of a savepoint and feed it into these tables - Fixed a bug in SavepointEnvironment#getTaskInfo where the reported number of subtasks could exceed the max parallelism of the operator being read. This surfaces when reading state from operators with a low max parallelism, such as windowAll(). - Added integration tests covering both the general and flattened window tables end to end, through the catalog and via SQL ## Verifying this change - Added StateCatalogWindowITCase which builds real savepoints containing window state and verifies both catalog discovery and SQL reads for the new tables. - Added a unit test for the new window state reader function. - Existing keyed-state catalog/table tests continue to pass, confirming the plain keyed-state path is unaffected. ## 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? (yes / no) - If yes, how is the feature documented? not yet --- ##### Was generative AI tooling used to co-author this PR? - [x ] Yes Generated-by: Claude Sonnet 5 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
