Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-25217

FLIP-190: Support Version Upgrades for Table API & SQL Programs

    XMLWordPrintableJSON

Details

    Description

      Nowadays, the Table & SQL API is as important to Flink as the DataStream API. It is one of the main abstractions for expressing pipelines that perform stateful stream processing. Users expect the same backwards compatibility guarantees when upgrading to a newer Flink version as with the DataStream API.

      In particular, this means:

      • once the operator topology is defined, it remains static and does not change between Flink versions, unless resulting in better performance,
      • business logic (defined using expressions and functions in queries) behaves identical as before the version upgrade,
      • the state of a Table & SQL API program can be restored from a savepoint of a previous version,
      • adding or removing stateful operators should be made possible in the DataStream API.

      The same query can remain up and running after upgrades.

      https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=191336489

      Attachments

        Issue Links

          1.
          Add catalog object compile/restore options Sub-task Closed Timo Walther  
          2.
          Add new STATEMENT SET syntax Sub-task Closed Wenlong Lyu  
          3.
          Support new statement set syntax in sql client and update docs Sub-task Closed Wenlong Lyu  
          4.
          Harden JSON Serialization utilities Sub-task Closed Francesco Guardiani  
          5.
          Harden type serialization in JSON plan Sub-task Closed Timo Walther  
          6.
          Avoid creating temporary tables for inline tables Sub-task Closed Francesco Guardiani  
          7.
          Improve function identifier string in plan digest Sub-task Closed Timo Walther
          8.
          Make ObjectIdentifier json representation simpler Sub-task Closed Francesco Guardiani  
          9.
          Add internal functions and basic function versioning Sub-task Closed Timo Walther  
          10.
          Handle symbols at a central place with serializable format Sub-task Closed Timo Walther  
          11.
          Properly declare internal UNNEST function Sub-task Closed Timo Walther  
          12.
          Introduce ContextResolvedFunction similar to ContextResolvedTable Sub-task Closed Timo Walther  
          13.
          Harden function serialization in JSON plan Sub-task Closed Timo Walther  
          14.
          Harden AggregateCall serialization in JSON plan Sub-task Closed Timo Walther  
          15.
          Support forward options in DynamicTableFactory Sub-task Closed Francesco Guardiani  
          16.
          Updating existing table factories for mutable table options Sub-task Closed Francesco Guardiani  
          17.
          Use compact DataType serialization for default classes instead of internal ones Sub-task Closed Timo Walther  
          18.
          Harden table serialization in JSON plan Sub-task Closed Francesco Guardiani  
          19.
          Introduce ExecNodeMetadata annotation and tooling Sub-task Closed Marios Trivyzas  
          20.
          Identify topology changing config options for all StreamExec nodes Sub-task Closed Marios Trivyzas  
          21.
          Update JSON plan with new ExecNodeMetadata Sub-task Closed Marios Trivyzas  
          22.
          Use jackson jdk8/time modules for Duration ser/de Sub-task Closed Francesco Guardiani  
          23.
          Introduce ExecNodeContext.generateUid() Sub-task Closed Francesco Guardiani  
          24.
          Expose uid generator for DataStream/Transformation providers Sub-task Closed Francesco Guardiani  
          25.
          LogicalRelDataTypeConverterTest is flaky on Azure Sub-task Closed Timo Walther  
          26.
          Introduce test infra for building FLIP-190 tests Sub-task Closed Timo Walther  
          27.
          Add ExecNodeGraph ser/de Sub-task Closed Francesco Guardiani  
          28.
          Expose plan via TableEnvironment.compilePlanSql/executePlan Sub-task Closed Francesco Guardiani  
          29.
          Expose plan via StatementSet.compilePlan Sub-task Closed Francesco Guardiani  
          30.
          Expose plan via SQL COMPILE / EXECUTE PLAN Sub-task Closed Francesco Guardiani  
          31.
          Introduce TablePipeline Sub-task Closed Francesco Guardiani  
          32.
          Expose plan via Table.compilePlan/TableEnvironment.fromPlan Sub-task Open Unassigned  
          33.
          Add FLIP-190 new API methods to python Sub-task In Progress Jane Chan  
          34.
          Use new FlinkVersion enum for serde plans Sub-task Closed Francesco Guardiani  
          35.
          Make Python specific exec nodes unsupported Sub-task Closed Francesco Guardiani  
          36.
          TableEnvironment#compilePlan should fail Sub-task Closed Francesco Guardiani  
          37.
          Persist per-ExecNode configuration Sub-task Closed Marios Trivyzas  
          38.
          CompiledPlan should implement Executable Sub-task Closed Francesco Guardiani  
          39.
          Always serialize anonymous table Sub-task Closed Francesco Guardiani  
          40.
          Fix parser generator warnings Sub-task Closed Francesco Guardiani  
          41.
          Document the upgrade story Sub-task In Progress Timo Walther  
          42.
          Add a flag to disable uid generation Sub-task Closed Francesco Guardiani  
          43.
          Introduce ExecutionNodeConfig which will be used in all Exec Nodes Sub-task Closed Marios Trivyzas  
          44.
          Replace TableConfig with PlannerConfig in PlannerContext Sub-task Closed Marios Trivyzas  
          45.
          Improve reporting serialisation issues Sub-task Closed Dawid Wysakowicz  
          46.
          Make TestValues sinks return results as Rows Sub-task Closed Dawid Wysakowicz  
          47.
          Add a RestoreTestBase Sub-task Resolved Dawid Wysakowicz  
          48.
          Avoid CompiledPlan recompilation during loading Sub-task Closed Timo Walther  
          49.
          Add a test to verify if restore test exists for ExecNode Sub-task Closed Bonnie Varghese  

          Activity

            People

              Unassigned Unassigned
              twalthr Timo Walther
              Votes:
              1 Vote for this issue
              Watchers:
              31 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10m
                  10m