Interface Planner


@Internal public interface Planner
This interface serves two purposes:
  • SQL parser via getParser() - transforms a SQL string into a Table API specific objects e.g. tree of Operations
  • relational planner - provides a way to plan, optimize and transform tree of ModifyOperation into a runnable form (Transformation)

The Planner is execution agnostic. It is up to the TableEnvironment to ensure that if any of the QueryOperation pull any runtime configuration, all those configurations are equivalent. Example: If some of the QueryOperations scan DataStreams, all those DataStreams must come from the same StreamExecutionEnvironment, because the result of translate(List) will strip any execution configuration from the DataStream information.

All Tables referenced in either Parser.parse(String) or translate(List) should be previously registered in a CatalogManager, which will be provided during instantiation of the Planner.

  • Method Details

    • getParser

      Parser getParser()
      Retrieves a Parser that provides methods for parsing a SQL string.
      Returns:
      initialized Parser
    • translate

      List<org.apache.flink.api.dag.Transformation<?>> translate(List<ModifyOperation> modifyOperations)
      Converts a relational tree of ModifyOperations into a set of runnable Transformations.

      This method accepts a list of ModifyOperations to allow reusing common subtrees of multiple relational queries. Each query's top node should be a ModifyOperation in order to pass the expected properties of the output Transformation such as output mode (append, retract, upsert) or the expected output type.

      Parameters:
      modifyOperations - list of relational operations to plan, optimize and convert in a single run.
      Returns:
      list of corresponding Transformations.
    • explain

      String explain(List<Operation> operations, ExplainFormat format, ExplainDetail... extraDetails)
      Returns the AST of the specified Table API and SQL queries and the execution plan to compute the result of the given collection of QueryOperations.
      Parameters:
      operations - The collection of relational queries for which the AST and execution plan will be returned.
      format - The output format of explained statement. See more details at ExplainFormat.
      extraDetails - The extra explain details which the explain result should include, e.g. estimated cost, changelog mode for streaming, displaying execution plan in json format
    • loadPlan

      @Experimental InternalPlan loadPlan(PlanReference planReference) throws IOException
      Throws:
      IOException
    • compilePlan

      @Experimental InternalPlan compilePlan(List<ModifyOperation> modifyOperations)
    • translatePlan

      @Experimental List<org.apache.flink.api.dag.Transformation<?>> translatePlan(InternalPlan plan)
    • explainPlan

      @Experimental String explainPlan(InternalPlan plan, ExplainDetail... extraDetails)