Interface Planner

All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
PlannerImpl

public interface Planner extends AutoCloseable
A façade that covers Calcite's query planning process: parse SQL, validate the parse tree, convert the parse tree to a relational expression, and optimize the relational expression.

Planner is NOT thread safe. However, it can be reused for different queries. The consumer of this interface is responsible for calling reset() after each use of Planner that corresponds to a different query.

  • Method Details

    • parse

      default SqlNode parse(String sql) throws SqlParseException
      Parses and validates a SQL statement.
      Parameters:
      sql - The SQL statement to parse.
      Returns:
      The root node of the SQL parse tree.
      Throws:
      SqlParseException - on parse error
    • parse

      SqlNode parse(Reader source) throws SqlParseException
      Parses and validates a SQL statement.
      Parameters:
      source - A reader which will provide the SQL statement to parse.
      Returns:
      The root node of the SQL parse tree.
      Throws:
      SqlParseException - on parse error
    • validate

      SqlNode validate(SqlNode sqlNode) throws ValidationException
      Validates a SQL statement.
      Parameters:
      sqlNode - Root node of the SQL parse tree.
      Returns:
      Validated node
      Throws:
      ValidationException - if not valid
    • validateAndGetType

      Pair<SqlNode,RelDataType> validateAndGetType(SqlNode sqlNode) throws ValidationException
      Validates a SQL statement.
      Parameters:
      sqlNode - Root node of the SQL parse tree.
      Returns:
      Validated node and its validated type.
      Throws:
      ValidationException - if not valid
    • getParameterRowType

      RelDataType getParameterRowType()
      Returns a record type that contains the name and type of each parameter. Returns a record type with no fields if there are no parameters.
      Returns:
      Record type
    • rel

      Converts a SQL parse tree into a tree of relational expressions.

      You must call validate(org.apache.calcite.sql.SqlNode) first.

      Parameters:
      sql - The root node of the SQL parse tree.
      Returns:
      The root node of the newly generated RelNode tree.
      Throws:
      RelConversionException - if the node cannot be converted or has not been validated
    • convert

      Throws:
      RelConversionException
    • getTypeFactory

      RelDataTypeFactory getTypeFactory()
      Returns the type factory.
    • transform

      RelNode transform(int ruleSetIndex, RelTraitSet requiredOutputTraits, RelNode rel) throws RelConversionException
      Converts one relational expression tree into another relational expression based on a particular rule set and requires set of traits.
      Parameters:
      ruleSetIndex - The RuleSet to use for conversion purposes. Note that this is zero-indexed and is based on the list and order of RuleSets provided in the construction of this Planner.
      requiredOutputTraits - The set of RelTraits required of the root node at the termination of the planning cycle.
      rel - The root of the RelNode tree to convert.
      Returns:
      The root of the new RelNode tree.
      Throws:
      RelConversionException - on conversion error
    • reset

      void reset()
      Resets this Planner to be used with a new query. This should be called between each new query.
    • close

      void close()
      Releases all internal resources utilized while this Planner exists. Once called, this Planner object is no longer valid.
      Specified by:
      close in interface AutoCloseable
    • getEmptyTraitSet

      RelTraitSet getEmptyTraitSet()