Package org.apache.calcite.prepare
Class Prepare
- java.lang.Object
-
- org.apache.calcite.prepare.Prepare
-
- Direct Known Subclasses:
CalcitePrepareImpl.CalcitePreparingStmt
public abstract class Prepare extends java.lang.Object
Abstract base for classes that implement the process of preparing and executing SQL expressions.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Prepare.AbstractPreparingTable
Abstract implementation ofPrepare.PreparingTable
with an implementation forPrepare.AbstractPreparingTable.columnHasDefaultValue(org.apache.calcite.rel.type.RelDataType, int, org.apache.calcite.sql2rel.InitializerContext)
.static interface
Prepare.CatalogReader
Interface by which validator and planner can read table metadata.static class
Prepare.Materialization
Describes that a given SQL query is materialized by a given table.static class
Prepare.PreparedExplain
PreparedExplanation is a PreparedResult for an EXPLAIN PLAN statement.static interface
Prepare.PreparedResult
static class
Prepare.PreparedResultImpl
Abstract implementation ofPrepare.PreparedResult
.static interface
Prepare.PreparingTable
Definition of a table, for the purposes of the validator and planner.
-
Field Summary
Fields Modifier and Type Field Description protected Prepare.CatalogReader
catalogReader
protected CalcitePrepare.Context
context
protected java.util.List<java.util.List<java.lang.String>>
fieldOrigins
protected static org.slf4j.Logger
LOGGER
protected RelDataType
parameterRowType
protected Convention
resultConvention
Convention via which results should be returned by execution.static TryThreadLocal<java.lang.Boolean>
THREAD_EXPAND
Temporary, until [CALCITE-1045] Decorrelate sub-queries in Project and Join is fixed.static TryThreadLocal<java.lang.Boolean>
THREAD_TRIM
protected CalciteTimingTracer
timingTracer
-
Constructor Summary
Constructors Constructor Description Prepare(CalcitePrepare.Context context, Prepare.CatalogReader catalogReader, Convention resultConvention)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract Prepare.PreparedResult
createPreparedExplanation(RelDataType resultType, RelDataType parameterRowType, RelRoot root, SqlExplainFormat format, SqlExplainLevel detailLevel)
protected abstract RelNode
decorrelate(SqlToRelConverter sqlToRelConverter, SqlNode query, RelNode rootRel)
abstract RelNode
flattenTypes(RelNode rootRel, boolean restructure)
protected RelTraitSet
getDesiredRootTraitSet(RelRoot root)
protected abstract java.util.List<CalciteSchema.LatticeEntry>
getLattices()
protected abstract java.util.List<Prepare.Materialization>
getMaterializations()
protected Program
getProgram()
protected abstract SqlToRelConverter
getSqlToRelConverter(SqlValidator validator, Prepare.CatalogReader catalogReader, SqlToRelConverter.Config config)
Protected method to allow subclasses to override construction of SqlToRelConverter.protected abstract SqlValidator
getSqlValidator()
protected abstract Prepare.PreparedResult
implement(RelRoot root)
Implements a physical query plan.protected abstract void
init(java.lang.Class runtimeContextClass)
protected TableModify.Operation
mapTableModOp(boolean isDml, SqlKind sqlKind)
protected RelRoot
optimize(RelRoot root, java.util.List<Prepare.Materialization> materializations, java.util.List<CalciteSchema.LatticeEntry> lattices)
Optimizes a query plan.Prepare.PreparedResult
prepareSql(SqlNode sqlQuery, java.lang.Class runtimeContextClass, SqlValidator validator, boolean needsValidation)
Prepare.PreparedResult
prepareSql(SqlNode sqlQuery, SqlNode sqlNodeOriginal, java.lang.Class runtimeContextClass, SqlValidator validator, boolean needsValidation)
private boolean
shouldTrim(RelNode rootRel)
protected RelRoot
trimUnusedFields(RelRoot root)
Walks over a tree of relational expressions, replacing eachRelNode
with a 'slimmed down' relational expression that projects only the columns required by its consumer.
-
-
-
Field Detail
-
LOGGER
protected static final org.slf4j.Logger LOGGER
-
context
protected final CalcitePrepare.Context context
-
catalogReader
protected final Prepare.CatalogReader catalogReader
-
resultConvention
protected final Convention resultConvention
Convention via which results should be returned by execution.
-
timingTracer
protected CalciteTimingTracer timingTracer
-
fieldOrigins
protected java.util.List<java.util.List<java.lang.String>> fieldOrigins
-
parameterRowType
protected RelDataType parameterRowType
-
THREAD_TRIM
public static final TryThreadLocal<java.lang.Boolean> THREAD_TRIM
-
THREAD_EXPAND
public static final TryThreadLocal<java.lang.Boolean> THREAD_EXPAND
Temporary, until [CALCITE-1045] Decorrelate sub-queries in Project and Join is fixed.The default is false, meaning do not expand queries during sql-to-rel, but a few tests override and set it to true. After CALCITE-1045 is fixed, remove those overrides and use false everywhere.
-
-
Constructor Detail
-
Prepare
public Prepare(CalcitePrepare.Context context, Prepare.CatalogReader catalogReader, Convention resultConvention)
-
-
Method Detail
-
createPreparedExplanation
protected abstract Prepare.PreparedResult createPreparedExplanation(RelDataType resultType, RelDataType parameterRowType, RelRoot root, SqlExplainFormat format, SqlExplainLevel detailLevel)
-
optimize
protected RelRoot optimize(RelRoot root, java.util.List<Prepare.Materialization> materializations, java.util.List<CalciteSchema.LatticeEntry> lattices)
Optimizes a query plan.- Parameters:
root
- Root of relational expression treematerializations
- Tables known to be populated with a given querylattices
- Lattices- Returns:
- an equivalent optimized relational expression
-
getProgram
protected Program getProgram()
-
getDesiredRootTraitSet
protected RelTraitSet getDesiredRootTraitSet(RelRoot root)
-
implement
protected abstract Prepare.PreparedResult implement(RelRoot root)
Implements a physical query plan.- Parameters:
root
- Root of the relational expression tree- Returns:
- an executable plan
-
prepareSql
public Prepare.PreparedResult prepareSql(SqlNode sqlQuery, java.lang.Class runtimeContextClass, SqlValidator validator, boolean needsValidation)
-
prepareSql
public Prepare.PreparedResult prepareSql(SqlNode sqlQuery, SqlNode sqlNodeOriginal, java.lang.Class runtimeContextClass, SqlValidator validator, boolean needsValidation)
-
mapTableModOp
protected TableModify.Operation mapTableModOp(boolean isDml, SqlKind sqlKind)
-
getSqlToRelConverter
protected abstract SqlToRelConverter getSqlToRelConverter(SqlValidator validator, Prepare.CatalogReader catalogReader, SqlToRelConverter.Config config)
Protected method to allow subclasses to override construction of SqlToRelConverter.
-
decorrelate
protected abstract RelNode decorrelate(SqlToRelConverter sqlToRelConverter, SqlNode query, RelNode rootRel)
-
getMaterializations
protected abstract java.util.List<Prepare.Materialization> getMaterializations()
-
getLattices
protected abstract java.util.List<CalciteSchema.LatticeEntry> getLattices()
-
trimUnusedFields
protected RelRoot trimUnusedFields(RelRoot root)
Walks over a tree of relational expressions, replacing eachRelNode
with a 'slimmed down' relational expression that projects only the columns required by its consumer.- Parameters:
root
- Root of relational expression tree- Returns:
- Trimmed relational expression
-
shouldTrim
private boolean shouldTrim(RelNode rootRel)
-
init
protected abstract void init(java.lang.Class runtimeContextClass)
-
getSqlValidator
protected abstract SqlValidator getSqlValidator()
-
-