Package org.apache.calcite.tools
Interface Planner
-
- All Superinterfaces:
java.lang.AutoCloseable
- All Known Implementing Classes:
PlannerImpl
public interface Planner extends java.lang.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 Summary
All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description void
close()
Releases all internal resources utilized while thisPlanner
exists.RelNode
convert(SqlNode sql)
Deprecated.RelTraitSet
getEmptyTraitSet()
RelDataTypeFactory
getTypeFactory()
Returns the type factory.SqlNode
parse(java.io.Reader source)
Parses and validates a SQL statement.default SqlNode
parse(java.lang.String sql)
Parses and validates a SQL statement.RelRoot
rel(SqlNode sql)
Converts a SQL parse tree into a tree of relational expressions.void
reset()
Resets thisPlanner
to be used with a new query.RelNode
transform(int ruleSetIndex, RelTraitSet requiredOutputTraits, RelNode rel)
Converts one relational expression tree into another relational expression based on a particular rule set and requires set of traits.SqlNode
validate(SqlNode sqlNode)
Validates a SQL statement.Pair<SqlNode,RelDataType>
validateAndGetType(SqlNode sqlNode)
Validates a SQL statement.
-
-
-
Method Detail
-
parse
default SqlNode parse(java.lang.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(java.io.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
-
rel
RelRoot rel(SqlNode sql) throws RelConversionException
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
@Deprecated RelNode convert(SqlNode sql) throws RelConversionException
Deprecated.- 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 thisPlanner
to be used with a new query. This should be called between each new query.
-
close
void close()
Releases all internal resources utilized while thisPlanner
exists. Once called, this Planner object is no longer valid.- Specified by:
close
in interfacejava.lang.AutoCloseable
-
getEmptyTraitSet
RelTraitSet getEmptyTraitSet()
-
-