Search in sources :

Example 6 with HiveTableFunctionScan

use of org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableFunctionScan in project hive by apache.

the class HiveCalciteUtil method getTopLevelSelect.

/**
 * Get top level select starting from root. Assumption here is root can only
 * be Sort & Project. Also the top project should be at most 2 levels below
 * Sort; i.e Sort(Limit)-Sort(OB)-Select
 *
 * @param rootRel
 * @return
 */
public static Pair<RelNode, RelNode> getTopLevelSelect(final RelNode rootRel) {
    RelNode tmpRel = rootRel;
    RelNode parentOforiginalProjRel = rootRel;
    RelNode originalProjRel = null;
    while (tmpRel != null) {
        if (tmpRel instanceof HiveProject || tmpRel instanceof HiveTableFunctionScan) {
            originalProjRel = tmpRel;
            break;
        }
        parentOforiginalProjRel = tmpRel;
        tmpRel = tmpRel.getInput(0);
    }
    return (new Pair<RelNode, RelNode>(parentOforiginalProjRel, originalProjRel));
}
Also used : RelNode(org.apache.calcite.rel.RelNode) HiveProject(org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject) HiveTableFunctionScan(org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableFunctionScan)

Aggregations

HiveTableFunctionScan (org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableFunctionScan)6 ArrayList (java.util.ArrayList)5 RelNode (org.apache.calcite.rel.RelNode)5 RelDataType (org.apache.calcite.rel.type.RelDataType)4 RexNode (org.apache.calcite.rex.RexNode)4 ImmutableBitSet (org.apache.calcite.util.ImmutableBitSet)4 CalciteSemanticException (org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException)4 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)3 RexBuilder (org.apache.calcite.rex.RexBuilder)3 HiveAggregate (org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate)3 HiveUnion (org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion)3 Builder (com.google.common.collect.ImmutableList.Builder)2 BigDecimal (java.math.BigDecimal)2 HashSet (java.util.HashSet)2 RelOptCluster (org.apache.calcite.plan.RelOptCluster)2 AggregateCall (org.apache.calcite.rel.core.AggregateCall)2 Project (org.apache.calcite.rel.core.Project)2 RexCall (org.apache.calcite.rex.RexCall)2 RexInputRef (org.apache.calcite.rex.RexInputRef)2 RexLiteral (org.apache.calcite.rex.RexLiteral)2