Package org.apache.druid.sql.calcite.rel
Class DruidQueryRel
java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.druid.sql.calcite.rel.DruidRel<DruidQueryRel>
org.apache.druid.sql.calcite.rel.DruidQueryRel
- All Implemented Interfaces:
Cloneable,org.apache.calcite.plan.RelOptNode,org.apache.calcite.rel.RelNode
DruidRel that operates on top of a
DruidTable directly (no joining or subqueries).-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
org.apache.calcite.rel.RelNode.Context -
Field Summary
Fields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSet -
Method Summary
Modifier and TypeMethodDescriptionReturns a copy of this rel with theDruidConventiontrait.org.apache.calcite.plan.RelOptCostcomputeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) protected org.apache.calcite.rel.type.RelDataTypeorg.apache.calcite.rel.RelWriterexplainTerms(org.apache.calcite.rel.RelWriter pw) Overridden to ensure that subclasses provide a proper implementation.Get the set of names of table datasources read by this DruidRelReturns the PartialDruidQuery associated with this DruidRel, and which can be built on top of.org.apache.calcite.plan.RelOptTablegetTable()static DruidQueryRelscanConstantRel(org.apache.calcite.rel.RelNode rel, InlineDataSource dataSource, PlannerContext plannerContext) Create a DruidQueryRel representing a full scan of inline, literal values.static DruidQueryRelscanExternal(ExternalTableScan scanRel, PlannerContext plannerContext) Create a DruidQueryRel representing a full scan of external data.static DruidQueryRelscanTable(org.apache.calcite.rel.logical.LogicalTableScan scanRel, org.apache.calcite.plan.RelOptTable table, DruidTable druidTable, PlannerContext plannerContext) Create a DruidQueryRel representing a full scan of a builtin table or lookup.toDruidQuery(boolean finalizeAggregations) Convert this DruidRel to a DruidQuery.Convert this DruidRel to a DruidQuery for purposes of explaining.withPartialQuery(PartialDruidQuery newQueryBuilder) Methods inherited from class org.apache.druid.sql.calcite.rel.DruidRel
clone, getPlannerContext, isValidDruidQuery, runQuery, unwrapLogicalPlanMethods inherited from class org.apache.calcite.rel.AbstractRelNode
accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, copy, deepEquals, deepHashCode, equals, estimateRowCount, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getRelDigest, getRelTypeName, getRowType, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, replaceInput, sole, toStringMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.calcite.rel.RelNode
explain, fieldIsNullable, stripped
-
Method Details
-
scanTable
public static DruidQueryRel scanTable(org.apache.calcite.rel.logical.LogicalTableScan scanRel, org.apache.calcite.plan.RelOptTable table, DruidTable druidTable, PlannerContext plannerContext) Create a DruidQueryRel representing a full scan of a builtin table or lookup. -
scanExternal
Create a DruidQueryRel representing a full scan of external data. -
scanConstantRel
public static DruidQueryRel scanConstantRel(org.apache.calcite.rel.RelNode rel, InlineDataSource dataSource, PlannerContext plannerContext) Create a DruidQueryRel representing a full scan of inline, literal values. -
toDruidQuery
Description copied from class:DruidRelConvert this DruidRel to a DruidQuery. This must be an inexpensive operation, since it is done often throughout query planning. This method must not return null.- Specified by:
toDruidQueryin classDruidRel<DruidQueryRel>- Parameters:
finalizeAggregations- true if this query should include explicit finalization for all of its aggregators, where required. Useful for subqueries where Druid's native query layer does not do this automatically.
-
toDruidQueryForExplaining
Description copied from class:DruidRelConvert this DruidRel to a DruidQuery for purposes of explaining. This must be an inexpensive operation. This method must not return null.- Specified by:
toDruidQueryForExplainingin classDruidRel<DruidQueryRel>
-
asDruidConvention
Description copied from class:DruidRelReturns a copy of this rel with theDruidConventiontrait.- Specified by:
asDruidConventionin classDruidRel<DruidQueryRel>
-
getDataSourceNames
Description copied from class:DruidRelGet the set of names of table datasources read by this DruidRel- Specified by:
getDataSourceNamesin classDruidRel<DruidQueryRel>
-
getPartialDruidQuery
Description copied from class:DruidRelReturns the PartialDruidQuery associated with this DruidRel, and which can be built on top of. Returns null if this rel cannot be built on top of.- Specified by:
getPartialDruidQueryin classDruidRel<DruidQueryRel>
-
withPartialQuery
- Specified by:
withPartialQueryin classDruidRel<DruidQueryRel>
-
getDruidTable
-
getTable
public org.apache.calcite.plan.RelOptTable getTable()- Specified by:
getTablein interfaceorg.apache.calcite.rel.RelNode- Overrides:
getTablein classorg.apache.calcite.rel.AbstractRelNode
-
deriveRowType
protected org.apache.calcite.rel.type.RelDataType deriveRowType()- Overrides:
deriveRowTypein classorg.apache.calcite.rel.AbstractRelNode
-
explainTerms
public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw) Description copied from class:DruidRelOverridden to ensure that subclasses provide a proper implementation. The default implementation fromAbstractRelNodedoes nothing and is not appropriate.- Overrides:
explainTermsin classDruidRel<DruidQueryRel>
-
computeSelfCost
public org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) - Specified by:
computeSelfCostin interfaceorg.apache.calcite.rel.RelNode- Overrides:
computeSelfCostin classorg.apache.calcite.rel.AbstractRelNode
-