possibleTargetNodes.addAll(groupingMap.keySet()); for (Map.Entry<PlanNode, List<AggregateSymbol>> entry : aggregateMap.entrySet()) { if (AggregateSymbol.areAggregatesCardinalityDependent(entry.getValue())) {
possibleTargetNodes.addAll(groupingMap.keySet()); for (Map.Entry<PlanNode, List<AggregateSymbol>> entry : aggregateMap.entrySet()) { if (AggregateSymbol.areAggregatesCardinalityDependent(entry.getValue())) {
possibleTargetNodes.addAll(groupingMap.keySet()); for (Map.Entry<PlanNode, List<AggregateSymbol>> entry : aggregateMap.entrySet()) { if (AggregateSymbol.areAggregatesCardinalityDependent(entry.getValue())) {
/** * Return true if the result from the subquery may be different * if non-distinct rows are used as input * @param query * @return */ public static boolean requiresDistinctRows(Query query) { Set<AggregateSymbol> aggs = new HashSet<AggregateSymbol>(); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getSelect(), false)); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getHaving(), false)); if (!aggs.isEmpty() || query.getGroupBy() != null) { if (!AggregateSymbol.areAggregatesCardinalityDependent(aggs)) { return false; } } else if (query.getSelect().isDistinct()) { for (Expression projectSymbol : query.getSelect().getProjectedSymbols()) { Expression ex = SymbolMap.getExpression(projectSymbol); if (FunctionCollectorVisitor.isNonDeterministic(ex)) { return true; } if (!ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(ex).isEmpty()) { return true; } } return false; } return true; }
private boolean requiresDistinctRows(Query query) { Set<AggregateSymbol> aggs = new HashSet<AggregateSymbol>(); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getSelect(), false)); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getHaving(), false)); if (!aggs.isEmpty() || query.getGroupBy() != null) { if (!AggregateSymbol.areAggregatesCardinalityDependent(aggs)) { return false; } } else if (query.getSelect().isDistinct()) { for (Expression projectSymbol : query.getSelect().getProjectedSymbols()) { Expression ex = SymbolMap.getExpression(projectSymbol); if (FunctionCollectorVisitor.isNonDeterministic(ex)) { return true; } if (!ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(ex).isEmpty()) { return true; } } return false; } return true; }
/** * Return true if the result from the subquery may be different * if non-distinct rows are used as input * @param query * @return */ public static boolean requiresDistinctRows(Query query) { Set<AggregateSymbol> aggs = new HashSet<AggregateSymbol>(); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getSelect(), false)); aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(query.getHaving(), false)); if (!aggs.isEmpty() || query.getGroupBy() != null) { if (!AggregateSymbol.areAggregatesCardinalityDependent(aggs)) { return false; } } else if (query.getSelect().isDistinct()) { for (Expression projectSymbol : query.getSelect().getProjectedSymbols()) { Expression ex = SymbolMap.getExpression(projectSymbol); if (FunctionCollectorVisitor.isNonDeterministic(ex)) { return true; } if (!ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(ex).isEmpty()) { return true; } } return false; } return true; }
boolean cardinalityDependent = AggregateSymbol.areAggregatesCardinalityDependent(aggregates);
boolean cardinalityDependent = AggregateSymbol.areAggregatesCardinalityDependent(aggregates);
boolean cardinalityDependent = AggregateSymbol.areAggregatesCardinalityDependent(aggregates);
return AggregateSymbol.areAggregatesCardinalityDependent(aggs);
return AggregateSymbol.areAggregatesCardinalityDependent(aggs);
return AggregateSymbol.areAggregatesCardinalityDependent(aggs);