org.apache.calcite.rel.RelNode.getInput()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(8.1k)|赞(0)|评价(0)|浏览(110)

本文整理了Java中org.apache.calcite.rel.RelNode.getInput方法的一些代码示例,展示了RelNode.getInput的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelNode.getInput方法的具体详情如下:
包路径:org.apache.calcite.rel.RelNode
类名称:RelNode
方法名:getInput

RelNode.getInput介绍

[英]Returns the ith input relational expression.
[中]返回第i个输入关系表达式。

代码示例

代码示例来源:origin: apache/hive

private RelNode getCorRel(CorRef corVar) {
 final RelNode r = cm.mapCorToCorRel.get(corVar.corr);
 RelNode ret = r.getInput(0);
 return ret;
}

代码示例来源:origin: apache/hive

private boolean isAggZeroOnEmpty(RexSubQuery e) {
 //as this is corr scalar subquery with agg we expect one aggregate
 assert(e.getKind() == SqlKind.SCALAR_QUERY);
 assert(e.rel.getInputs().size() == 1);
 Aggregate relAgg = (Aggregate)e.rel.getInput(0);
 assert(relAgg.getAggCallList().size() == 1); //should only have one aggregate
 if(relAgg.getAggCallList().get(0).getAggregation().getKind() == SqlKind.COUNT) {
  return true;
 }
 return false;
}

代码示例来源:origin: apache/hive

private SqlTypeName getAggTypeForScalarSub(RexSubQuery e) {
 assert(e.getKind() == SqlKind.SCALAR_QUERY);
 assert(e.rel.getInputs().size() == 1);
 Aggregate relAgg = (Aggregate)e.rel.getInput(0);
 assert(relAgg.getAggCallList().size() == 1); //should only have one aggregate
 return relAgg.getAggCallList().get(0).getType().getSqlTypeName();
}

代码示例来源:origin: apache/drill

private RelNode getCorRel(CorRef corVar) {
 final RelNode r = cm.mapCorToCorRel.get(corVar.corr);
 RelNode ret = r.getInput(0);
 return ret;
}

代码示例来源:origin: apache/hive

private static void traverseFilter(RexNode node, Set<CorrelationId> allVars) {
  if(node instanceof RexSubQuery) {
    //we expect correlated variables in HiveFilter only for now.
    // Also check for case where operator has 0 inputs .e.g TableScan
    RelNode input = ((RexSubQuery)node).rel.getInput(0);
    while(input != null && !(input instanceof HiveFilter)
        && input.getInputs().size() >=1) {
      //we don't expect corr vars withing JOIN or UNION for now
      // we only expect cor vars in top level filter
      if(input.getInputs().size() > 1) {
        return;
      }
      input = input.getInput(0);
    }
    if(input != null && input instanceof HiveFilter) {
      findCorrelatedVar(((HiveFilter)input).getCondition(), allVars);
    }
    return;
  }
  //AND, NOT etc
  if(node instanceof RexCall) {
    int numOperands = ((RexCall)node).getOperands().size();
    for(int i=0; i<numOperands; i++) {
      RexNode op = ((RexCall)node).getOperands().get(i);
      traverseFilter(op, allVars);
    }
  }
}

代码示例来源:origin: apache/hive

/**
 * 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;
 HiveProject originalProjRel = null;
 while (tmpRel != null) {
  if (tmpRel instanceof HiveProject) {
   originalProjRel = (HiveProject) tmpRel;
   break;
  }
  parentOforiginalProjRel = tmpRel;
  tmpRel = tmpRel.getInput(0);
 }
 return (new Pair<RelNode, RelNode>(parentOforiginalProjRel, originalProjRel));
}

代码示例来源:origin: apache/drill

private boolean isAggZeroOnEmpty(RexSubQuery e) {
  //as this is corr scalar subquery with agg we expect one aggregate
  assert(e.getKind() == SqlKind.SCALAR_QUERY);
  assert(e.rel.getInputs().size() == 1);
  Aggregate relAgg = (Aggregate)e.rel.getInput(0);
  assert( relAgg.getAggCallList().size() == 1); //should only have one aggregate
  if( relAgg.getAggCallList().get(0).getAggregation().getKind() == SqlKind.COUNT ) {
    return true;
  }
  return false;
}
private SqlTypeName getAggTypeForScalarSub(RexSubQuery e) {

代码示例来源:origin: apache/drill

/**
 * 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;
 HiveProject originalProjRel = null;
 while (tmpRel != null) {
  if (tmpRel instanceof HiveProject) {
   originalProjRel = (HiveProject) tmpRel;
   break;
  }
  parentOforiginalProjRel = tmpRel;
  tmpRel = tmpRel.getInput(0);
 }
 return (new Pair<RelNode, RelNode>(parentOforiginalProjRel, originalProjRel));
}

代码示例来源:origin: apache/drill

private SqlTypeName getAggTypeForScalarSub(RexSubQuery e) {
  assert(e.getKind() == SqlKind.SCALAR_QUERY);
  assert(e.rel.getInputs().size() == 1);
  Aggregate relAgg = (Aggregate)e.rel.getInput(0);
  assert( relAgg.getAggCallList().size() == 1); //should only have one aggregate
  return relAgg.getAggCallList().get(0).getType().getSqlTypeName();
}

代码示例来源:origin: apache/hive

@Override
public void visit(RelNode node, int ordinal, RelNode parent) {
 if (node instanceof Aggregate) {
  this.containsAggregate = true;
  // Aggregate mode - it should be followed by union
  // that we need to analyze
  RelNode input = node.getInput(0);
  if (input instanceof Union) {
   check((Union) input);
  }
 } else if (node instanceof Union) {
  // Non aggregate mode - analyze union operator
  check((Union) node);
 } else if (node instanceof Project) {
  // Project operator, we can continue
  super.visit(node, ordinal, parent);
 }
 throw new ReturnedValue(false);
}

代码示例来源:origin: apache/drill

private static void traverseFilter(RexNode node, Set<CorrelationId> allVars) {
  if(node instanceof RexSubQuery) {
    //we expect correlated variables in HiveFilter only for now.
    // Also check for case where operator has 0 inputs .e.g TableScan
    RelNode input = ((RexSubQuery)node).rel.getInput(0);
    while(input != null && !(input instanceof HiveFilter)
        && input.getInputs().size() >=1) {
      //we don't expect corr vars withing JOIN or UNION for now
      // we only expect cor vars in top level filter
      if(input.getInputs().size() > 1) {
        return;
      }
      input = input.getInput(0);
    }
    if(input != null && input instanceof HiveFilter) {
      findCorrelatedVar(((HiveFilter)input).getCondition(), allVars);
    }
    return;
  }
  //AND, NOT etc
  if(node instanceof RexCall) {
    int numOperands = ((RexCall)node).getOperands().size();
    for(int i=0; i<numOperands; i++) {
      RexNode op = ((RexCall)node).getOperands().get(i);
      traverseFilter(op, allVars);
    }
  }
}

代码示例来源:origin: apache/drill

@Override
public RelNode convert(RelNode in) {
 return new JdbcIntermediatePrel(
   in.getCluster(),
   in.getTraitSet().replace(getOutTrait()),
   in.getInput(0));
}

代码示例来源:origin: apache/drill

private static String getTblAlias(RelNode rel) {
 if (null == rel) {
  return null;
 }
 if (rel instanceof HiveTableScan) {
  return ((HiveTableScan)rel).getTableAlias();
 }
 if (rel instanceof DruidQuery) {
  DruidQuery dq = (DruidQuery) rel;
  return ((HiveTableScan) dq.getTableScan()).getTableAlias();
 }
 if (rel instanceof Project) {
  return null;
 }
 if (rel.getInputs().size() == 1) {
  return getTblAlias(rel.getInput(0));
 }
 return null;
}

代码示例来源:origin: apache/hive

} else {
 topProject = (Project) swapped;
 newJoin = (HiveJoin) swapped.getInput(0);

代码示例来源:origin: apache/hive

List<Operator<?>> children = new ArrayList<Operator<?>>(joinRel.getInputs().size());
for (int i = 0; i < inputs.length; i++) {
 inputs[i] = dispatch(joinRel.getInput(i));
 children.add(inputs[i].inputs.get(0));
 baseSrc[i] = inputs[i].tabAlias;
 joinExpressions[i] = ((HiveSortExchange) joinRel.getInput(i)).getJoinExpressions();

代码示例来源:origin: apache/drill

} else {
 topProject = (Project) swapped;
 newJoin = (HiveJoin) swapped.getInput(0);

代码示例来源:origin: apache/hive

private static String getTblAlias(RelNode rel) {
 if (null == rel) {
  return null;
 }
 if (rel instanceof HiveTableScan) {
  return ((HiveTableScan)rel).getTableAlias();
 }
 if (rel instanceof DruidQuery) {
  DruidQuery dq = (DruidQuery) rel;
  return ((HiveTableScan) dq.getTableScan()).getTableAlias();
 }
 if (rel instanceof HiveJdbcConverter) {
  HiveJdbcConverter conv = (HiveJdbcConverter) rel;
  return conv.getTableScan().getHiveTableScan().getTableAlias();
 }
 if (rel instanceof Project) {
  return null;
 }
 if (rel.getInputs().size() == 1) {
  return getTblAlias(rel.getInput(0));
 }
 return null;
}

代码示例来源:origin: apache/hive

if(currentRel.getInputs().size() == 1 && currentRel.getInput(0) instanceof LogicalCorrelate) {
 final Frame newFrame = map.get(currentRel.getInput(0));
 if(newFrame.r instanceof HiveSemiJoin) {
  int oldFieldSize = currentRel.getInput(0).getRowType().getFieldCount();
  int newOrd = newFrame.r.getRowType().getFieldCount() + oldOrdinalNo - oldFieldSize;
  return new RexInputRef(newOrd, oldInputRef.getType());

代码示例来源:origin: apache/hive

private Frame decorrelateInputWithValueGenerator(RelNode rel) {
 RelNode oldInput = rel.getInput(0);
 final Frame frame = map.get(oldInput);

代码示例来源:origin: apache/hive

HiveSortExchange exchange = HiveSortExchange.create(call.rel(0).getInput(i),
    new HiveRelDistribution(RelDistribution.Type.HASH_DISTRIBUTED, joinKeyPositions),
    new HiveRelCollation(collationListBuilder.build()),

相关文章