Class DruidUnionRel

java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.druid.sql.calcite.rel.DruidRel<DruidUnionRel>
org.apache.druid.sql.calcite.rel.DruidUnionRel
All Implemented Interfaces:
Cloneable, org.apache.calcite.plan.RelOptNode, org.apache.calcite.rel.RelNode

public class DruidUnionRel extends DruidRel<DruidUnionRel>
Represents a "UNION ALL" of various input DruidRel. Note that this rel doesn't represent a real native query, but rather, it represents the concatenation of a series of native queries in the SQL layer. Therefore, getPartialDruidQuery() returns null, and this rel cannot be built on top of. It must be the outer rel in a query plan.

See DruidUnionDataSourceRel for a version that does a regular Druid query using a UnionDataSource. In the future we expect that UnionDataSource will gain the ability to union query datasources together, and then this rel could be replaced by DruidUnionDataSourceRel.

  • 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, 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)
     
    org.apache.calcite.rel.RelNode
    copy(org.apache.calcite.plan.RelTraitSet traitSet, List<org.apache.calcite.rel.RelNode> inputs)
     
    create(PlannerContext plannerContext, org.apache.calcite.rel.type.RelDataType rowType, List<org.apache.calcite.rel.RelNode> rels, int limit)
     
    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
    List<org.apache.calcite.rel.RelNode>
     
    int
     
    Returns the PartialDruidQuery associated with this DruidRel, and which can be built on top of.
    void
    replaceInput(int ordinalInParent, org.apache.calcite.rel.RelNode p)
     
     
    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, unwrapLogicalPlan

    Methods inherited from class org.apache.calcite.rel.AbstractRelNode

    accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, deepEquals, deepHashCode, equals, estimateRowCount, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, 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

    • create

      public static DruidUnionRel create(PlannerContext plannerContext, org.apache.calcite.rel.type.RelDataType rowType, List<org.apache.calcite.rel.RelNode> rels, int limit)
    • getPartialDruidQuery

      @Nullable 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<DruidUnionRel>
    • runQuery

      public QueryResponse<Object[]> runQuery()
      Overrides:
      runQuery in class DruidRel<DruidUnionRel>
    • withPartialQuery

      public DruidUnionRel withPartialQuery(PartialDruidQuery newQueryBuilder)
      Specified by:
      withPartialQuery in class DruidRel<DruidUnionRel>
    • 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<DruidUnionRel>
      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<DruidUnionRel>
    • asDruidConvention

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

      public List<org.apache.calcite.rel.RelNode> getInputs()
      Specified by:
      getInputs in interface org.apache.calcite.rel.RelNode
      Specified by:
      getInputs in interface org.apache.calcite.plan.RelOptNode
      Overrides:
      getInputs in class org.apache.calcite.rel.AbstractRelNode
    • replaceInput

      public void replaceInput(int ordinalInParent, org.apache.calcite.rel.RelNode p)
      Specified by:
      replaceInput in interface org.apache.calcite.rel.RelNode
      Overrides:
      replaceInput in class org.apache.calcite.rel.AbstractRelNode
    • copy

      public org.apache.calcite.rel.RelNode copy(org.apache.calcite.plan.RelTraitSet traitSet, List<org.apache.calcite.rel.RelNode> inputs)
      Specified by:
      copy in interface org.apache.calcite.rel.RelNode
      Overrides:
      copy in class org.apache.calcite.rel.AbstractRelNode
    • 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<DruidUnionRel>
    • 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<DruidUnionRel>
    • deriveRowType

      protected org.apache.calcite.rel.type.RelDataType deriveRowType()
      Overrides:
      deriveRowType in class org.apache.calcite.rel.AbstractRelNode
    • 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
    • getLimit

      public int getLimit()