/** * Compare two Selects for equality. Order is important in the select (for * determining the order of the returned columns), so this is a compare * with order, not just a set comparison. * @param obj Other object * @return True if equal */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof Select)) { return false; } Select other = (Select) obj; return other.isDistinct() == isDistinct() && EquivalenceUtil.areEqual(getSymbols(), other.getSymbols()); }
/** * Compare two Selects for equality. Order is important in the select (for * determining the order of the returned columns), so this is a compare * with order, not just a set comparison. * @param obj Other object * @return True if equal */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof Select)) { return false; } Select other = (Select) obj; return other.isDistinct() == isDistinct() && EquivalenceUtil.areEqual(getSymbols(), other.getSymbols()); }
/** * Compare two Selects for equality. Order is important in the select (for * determining the order of the returned columns), so this is a compare * with order, not just a set comparison. * @param obj Other object * @return True if equal */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof Select)) { return false; } Select other = (Select) obj; return other.isDistinct() == isDistinct() && EquivalenceUtil.areEqual(getSymbols(), other.getSymbols()); }
/** * Return a deep copy of this Select. * @return Deep clone */ public Select clone() { Select copy = new Select(LanguageObject.Util.deepClone(this.symbols, Expression.class)); copy.setDistinct( isDistinct() ); return copy; }
/** * Return a deep copy of this Select. * @return Deep clone */ public Select clone() { Select copy = new Select(LanguageObject.Util.deepClone(this.symbols, Expression.class)); copy.setDistinct( isDistinct() ); return copy; }
/** * Return a deep copy of this Select. * @return Deep clone */ public Select clone() { Select copy = new Select(LanguageObject.Util.deepClone(this.symbols, Expression.class)); copy.setDistinct( isDistinct() ); return copy; }
public void visit(Select obj) { validateSelectElements(obj); if(obj.isDistinct()) { validateSortable(obj.getProjectedSymbols()); } }
public void visit(Select obj) { validateSelectElements(obj); if(obj.isDistinct()) { validateSortable(obj.getProjectedSymbols()); } }
public void visit(Select obj) { validateSelectElements(obj); if(obj.isDistinct()) { validateSortable(obj.getProjectedSymbols()); } }
@Override public void visit( Select obj ) { if (obj.isDistinct()) { append(SPACE); append(DISTINCT); } beginClause(2); Iterator<Expression> iter = obj.getSymbols().iterator(); while (iter.hasNext()) { Expression symbol = iter.next(); visitNode(symbol); if (iter.hasNext()) { append(", "); //$NON-NLS-1$ } } }
@Override public void visit( Select obj ) { if (obj.isDistinct()) { append(SPACE); append(DISTINCT); } beginClause(2); Iterator<Expression> iter = obj.getSymbols().iterator(); while (iter.hasNext()) { Expression symbol = iter.next(); visitNode(symbol); if (iter.hasNext()) { append(", "); //$NON-NLS-1$ } } }
@Override public void visit( Select obj ) { if (obj.isDistinct()) { append(SPACE); append(DISTINCT); } beginClause(2); Iterator<Expression> iter = obj.getSymbols().iterator(); while (iter.hasNext()) { Expression symbol = iter.next(); visitNode(symbol); if (iter.hasNext()) { append(", "); //$NON-NLS-1$ } } }
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; }
/** * 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; }
.getSelect().isDistinct(), items, translate(query.getCriteria()), translate(query.getGroupBy()), translate(query.getHaving()), translate(query.getOrderBy(), false));
.getSelect().isDistinct(), items, translate(query.getCriteria()), translate(query.getGroupBy()), translate(query.getHaving()), translate(query.getOrderBy(), false));
.getSelect().isDistinct(), items, translate(query.getCriteria()), translate(query.getGroupBy()), translate(query.getHaving()), translate(query.getOrderBy(), false));
ResultSetInfo rsInfo = element.getResultSetInfo(); Query rsQuery = (Query)rsInfo.getCommand(); if (rsQuery.getSelect().isDistinct()) { return;
if(query.getSelect().isDistinct()) { plan = attachDupRemoval(plan);