本文整理了Java中org.apache.calcite.rel.RelNode.getInput
方法的一些代码示例,展示了RelNode.getInput
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelNode.getInput
方法的具体详情如下:
包路径:org.apache.calcite.rel.RelNode
类名称:RelNode
方法名:getInput
[英]Returns the i
th 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()),
内容来源于网络,如有侵权,请联系作者删除!