Class DruidUnnestRel

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

public class DruidUnnestRel extends DruidRel<DruidUnnestRel>
Captures an unnest expression for a correlated join. Derived from an Uncollect. This rel cannot be executed directly. It is a holder of information for DruidCorrelateUnnestRel. Unnest on literal values, without correlated join, is handled directly by DruidUnnestRule. is applied without a correlated join, This covers the case where an unnest has an input table, this rel resolves the unnest part and delegates the rel to be consumed by other rule (DruidCorrelateUnnestRule
  • 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
    org.apache.calcite.rel.RelNode
    accept(org.apache.calcite.rex.RexShuttle shuttle)
     
    Returns a copy of this rel with the DruidConvention trait.
    create(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rex.RexNode unnestRexNode, PlannerContext plannerContext)
     
    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
    org.apache.calcite.rex.RexNode
    Expression to be unnested.
    Returns the PartialDruidQuery associated with this DruidRel, and which can be built on top of.
    org.apache.calcite.rel.core.Filter
     
    toDruidQuery(boolean finalizeAggregations)
    Convert this DruidRel to a DruidQuery.
    Convert this DruidRel to a DruidQuery for purposes of explaining.
    withFilter(org.apache.calcite.rel.core.Filter f)
     
     
    withUnnestRexNode(org.apache.calcite.rex.RexNode newInputRexNode)
    Returns a new rel with a new input.

    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, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, copy, deepEquals, deepHashCode, equals, estimateRowCount, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getRelDigest, getRelTypeName, getRowType, getTable, 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

    • getUnnestFilter

      public org.apache.calcite.rel.core.Filter getUnnestFilter()
    • create

      public static DruidUnnestRel create(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rex.RexNode unnestRexNode, PlannerContext plannerContext)
    • accept

      public org.apache.calcite.rel.RelNode accept(org.apache.calcite.rex.RexShuttle shuttle)
      Specified by:
      accept in interface org.apache.calcite.rel.RelNode
      Overrides:
      accept in class org.apache.calcite.rel.AbstractRelNode
    • getInputRexNode

      public org.apache.calcite.rex.RexNode getInputRexNode()
      Expression to be unnested.
    • 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<DruidUnnestRel>
    • withPartialQuery

      public DruidUnnestRel withPartialQuery(PartialDruidQuery newQueryBuilder)
      Specified by:
      withPartialQuery in class DruidRel<DruidUnnestRel>
    • withFilter

      public DruidUnnestRel withFilter(org.apache.calcite.rel.core.Filter f)
    • withUnnestRexNode

      public DruidUnnestRel withUnnestRexNode(org.apache.calcite.rex.RexNode newInputRexNode)
      Returns a new rel with a new input. The output type is unchanged.
    • 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<DruidUnnestRel>
      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<DruidUnnestRel>
    • asDruidConvention

      @Nullable public DruidUnnestRel asDruidConvention()
      Description copied from class: DruidRel
      Returns a copy of this rel with the DruidConvention trait.
      Specified by:
      asDruidConvention in class DruidRel<DruidUnnestRel>
    • 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<DruidUnnestRel>
    • 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<DruidUnnestRel>
    • deriveRowType

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