public KylinAggregateCall(AggregateCall aggCall, FunctionDesc func) { super(aggCall.getAggregation(), aggCall.isDistinct(), aggCall.getArgList(), aggCall.type, aggCall.name); this.func = func; }
private boolean isAggregateWithoutGbyKeys(final Aggregate agg) { return agg.getGroupCount() == 0 ? true : false; }
@Override public String toString() { return corr.getName() + '.' + field; }
@Override public boolean matches(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(0); final Project project = call.rel(1); if (aggregate.indicator || aggregate.getGroupSets().size() != 1) { return false; } for (AggregateCall aggregateCall : aggregate.getAggCallList()) { if (isOneArgAggregateCall(aggregateCall) && isThreeArgCase(project.getChildExps().get(Iterables.getOnlyElement(aggregateCall.getArgList())))) { return true; } } return false; }
static HiveTableScan getTableScan(RelNode r, boolean traverseProject) { while (r != null && !(r instanceof HiveTableScan)) { if (r instanceof HepRelVertex) { r = ((HepRelVertex) r).getCurrentRel(); } else if (r instanceof Filter) { r = ((Filter) r).getInput(); } else if (traverseProject && r instanceof Project) { r = ((Project) r).getInput(); } else { r = null; } } return r == null ? null : (HiveTableScan) r; } }
public void handle(Filter filter) { RelNode child = filter.getInput(); if (child instanceof Aggregate && !((Aggregate) child).getGroupSet().isEmpty()) { ASTConverter.this.having = filter; } else { ASTConverter.this.where = filter; } }
private static boolean isTrivial(Project project, Intersect intersect) { return RexUtil.isIdentity(project.getProjects(), intersect.getRowType()); }
private static boolean isOneArgAggregateCall(final AggregateCall aggregateCall) { return aggregateCall.getArgList().size() == 1; }
public boolean apply(Filter input) { return input.getCondition() instanceof RexInputRef; } };
/** Returns a literal output field, or null if it is not literal. */ private static RexLiteral projectedLiteral(RelNode rel, int i) { if (rel instanceof Project) { final Project project = (Project) rel; final RexNode node = project.getProjects().get(i); if (node instanceof RexLiteral) { return (RexLiteral) node; } } return null; }
@Override public boolean matches(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(1); return !aggregate.indicator && aggregate.getGroupSets().size() == 1; }
@Override public RelWriter explainTerms(RelWriter pw) { if (this.useQBIdInDigest) { // TODO: Only the qualified name should be left here return super.explainTerms(pw) .item("qbid:alias", concatQbIDAlias); } else { return super.explainTerms(pw).item("table:alias", tblAlias); } }
public Aggregate.Group getGroupType() { return Aggregate.Group.induce(groupSet, groupSets); } }
public String getType() { return type.name(); }
@Override public RelWriter explainTerms(RelWriter pw) { return super.explainTerms(pw) .item("algorithm", joinAlgorithm == null ? "none" : joinAlgorithm) .item("cost", joinCost == null ? "not available" : joinCost); }
static HiveTableScan getTableScan(RelNode r, boolean traverseProject) { while (r != null && !(r instanceof HiveTableScan)) { if (r instanceof HepRelVertex) { r = ((HepRelVertex) r).getCurrentRel(); } else if (r instanceof Filter) { r = ((Filter) r).getInput(); } else if (traverseProject && r instanceof Project) { r = ((Project) r).getInput(); } else { r = null; } } return r == null ? null : (HiveTableScan) r; }
public void handle(Filter filter) { RelNode child = filter.getInput(); if (child instanceof Aggregate && !((Aggregate) child).getGroupSet().isEmpty()) { ASTConverter.this.having = filter; } else { ASTConverter.this.where = filter; } }
@Override public String toString() { return corr.getName() + '.' + field; }
@Override public String toString() { return corr.getName() + '.' + field; }
@Override public String toString() { return corr.getName() + '.' + field; }