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

Refactor TableEnvironment and TranslationContext

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Done
    • None
    • 1.1.0
    • Table SQL / API
    • None

    Description

      Currently the TableAPI uses a static object called TranslationContext which holds the Calcite table catalog and a Calcite planner instance. Whenever a DataSet or DataStream is converted into a Table or registered as a Table on the TableEnvironment, a new entry is added to the catalog. The first time a Table is added, a planner instance is created. The planner is used to optimize the query (defined by one or more Table API operations and/or one ore more SQL queries) when a Table is converted into a DataSet or DataStream. Since a planner may only be used to optimize a single program, the choice of a single static object is problematic.

      I propose to refactor the TableEnvironment to take over the responsibility of holding the catalog and the planner instance.

      • A TableEnvironment holds a catalog of registered tables and a single planner instance.
      • A TableEnvironment will only allow to translate a single Table (possibly composed of several Table API operations and SQL queries) into a DataSet or DataStream.
      • A TableEnvironment is bound to an ExecutionEnvironment or a StreamExecutionEnvironment. This is necessary to create data source or source functions to read external tables or streams.
      • DataSet and DataStream need a reference to a TableEnvironment to be converted into a Table. This will prohibit implicit casts as currently supported for the DataSet Scala API.
      • A Table needs a reference to the TableEnvironment it is bound to. Only tables from the same TableEnvironment can be processed together.
      • The TranslationContext will be completely removed.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            fhueske Fabian Hueske
            fhueske Fabian Hueske
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment