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

public class DruidQueryRel extends DruidRel<DruidQueryRel>
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 Type
    Method
    Description
    Returns a copy of this rel with the DruidConvention trait.
    org.apache.calcite.plan.RelOptCost
    computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq)
     
    protected org.apache.calcite.rel.type.RelDataType
     
    org.apache.calcite.rel.RelWriter
    explainTerms(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 DruidRel
     
    Returns the PartialDruidQuery associated with this DruidRel, and which can be built on top of.
    org.apache.calcite.plan.RelOptTable
     
    scanConstantRel(org.apache.calcite.rel.RelNode rel, InlineDataSource dataSource, PlannerContext plannerContext)
    Create a DruidQueryRel representing a full scan of inline, literal values.
    scanExternal(ExternalTableScan scanRel, PlannerContext plannerContext)
    Create a DruidQueryRel representing a full scan of external data.
    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.
    toDruidQuery(boolean finalizeAggregations)
    Convert this DruidRel to a DruidQuery.
    Convert this DruidRel to a DruidQuery for purposes of explaining.
     

    Methods inherited from class org.apache.druid.sql.calcite.rel.DruidRel

    clone, getPlannerContext, isValidDruidQuery, runQuery, unwrapLogicalPlan

    Methods 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, toString

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods 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

      public static DruidQueryRel scanExternal(ExternalTableScan scanRel, PlannerContext plannerContext)
      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

      public DruidQuery toDruidQuery(boolean finalizeAggregations)
      Description copied from class: DruidRel
      Convert 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:
      toDruidQuery in class DruidRel<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

      public DruidQuery toDruidQueryForExplaining()
      Description copied from class: DruidRel
      Convert this DruidRel to a DruidQuery for purposes of explaining. This must be an inexpensive operation. This method must not return null.
      Specified by:
      toDruidQueryForExplaining in class DruidRel<DruidQueryRel>
    • asDruidConvention

      public DruidQueryRel asDruidConvention()
      Description copied from class: DruidRel
      Returns a copy of this rel with the DruidConvention trait.
      Specified by:
      asDruidConvention in class DruidRel<DruidQueryRel>
    • getDataSourceNames

      public Set<String> getDataSourceNames()
      Description copied from class: DruidRel
      Get the set of names of table datasources read by this DruidRel
      Specified by:
      getDataSourceNames in class DruidRel<DruidQueryRel>
    • getPartialDruidQuery

      public PartialDruidQuery getPartialDruidQuery()
      Description copied from class: DruidRel
      Returns 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:
      getPartialDruidQuery in class DruidRel<DruidQueryRel>
    • withPartialQuery

      public DruidQueryRel withPartialQuery(PartialDruidQuery newQueryBuilder)
      Specified by:
      withPartialQuery in class DruidRel<DruidQueryRel>
    • getDruidTable

      public DruidTable getDruidTable()
    • getTable

      public org.apache.calcite.plan.RelOptTable getTable()
      Specified by:
      getTable in interface org.apache.calcite.rel.RelNode
      Overrides:
      getTable in class org.apache.calcite.rel.AbstractRelNode
    • deriveRowType

      protected org.apache.calcite.rel.type.RelDataType deriveRowType()
      Overrides:
      deriveRowType in class org.apache.calcite.rel.AbstractRelNode
    • explainTerms

      public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw)
      Description copied from class: DruidRel
      Overridden to ensure that subclasses provide a proper implementation. The default implementation from AbstractRelNode does nothing and is not appropriate.
      Overrides:
      explainTerms in class DruidRel<DruidQueryRel>
    • computeSelfCost

      public org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq)
      Specified by:
      computeSelfCost in interface org.apache.calcite.rel.RelNode
      Overrides:
      computeSelfCost in class org.apache.calcite.rel.AbstractRelNode