@Override public boolean equals(Object o) { if (o instanceof QueryMetadata) { QueryMetadata q = (QueryMetadata)o; return q.getFlags().equals(flags) && q.getGroupBy().equals(groupBy) && Objects.equal(q.getHaving(), having) && q.isDistinct() == distinct && q.isUnique() == unique && q.getJoins().equals(getJoins()) && Objects.equal(q.getModifiers(), modifiers) && q.getOrderBy().equals(orderBy) && q.getParams().equals(params) && q.getProjection().equals(projection) && Objects.equal(q.getWhere(), where); } else { return false; } }
public static Set<RelationalPath<?>> extract(QueryMetadata md) { Set<RelationalPath<?>> known = ImmutableSet.of(); known = DEFAULT.visitJoins(md.getJoins(), known); for (Expression<?> p : md.getProjection()) { known = p.accept(DEFAULT, known); } for (OrderSpecifier<?> o : md.getOrderBy()) { known = o.getTarget().accept(DEFAULT, known); } for (Expression<?> g : md.getGroupBy()) { known = g.accept(DEFAULT, known); } if (md.getHaving() != null) { known = md.getHaving().accept(DEFAULT, known); } if (md.getWhere() != null) { known = md.getWhere().accept(DEFAULT, known); } return known; }
@Override public Void visit(SubQueryExpression<?> expr, QueryMetadata context) { QueryMetadata md = expr.getMetadata(); for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()) { context.setParam((ParamExpression)entry.getKey(), entry.getValue()); } visit(md.getGroupBy(), context); visit(md.getHaving(), context); for (JoinExpression join : md.getJoins()) { visit(join.getTarget(), context); visit(join.getCondition(), context); } visit(md.getProjection(), context); visit(md.getWhere(), context); return null; }
@Nullable private Void visit(QueryMetadata md) { // select handle(md.getProjection()); // from for (JoinExpression join : md.getJoins()) { join.getTarget().accept(this, null); } // where handle(md.getWhere()); // group handle(md.getGroupBy()); // having handle(md.getHaving()); return null; }
@Override public Set<RelationalPath<?>> visit(SubQueryExpression<?> expr, Set<RelationalPath<?>> known) { Set<RelationalPath<?>> old = known; final QueryMetadata md = expr.getMetadata(); known = visitJoins(md.getJoins(), known); for (Expression<?> p : md.getProjection()) { known = p.accept(this, known); } for (OrderSpecifier<?> o : md.getOrderBy()) { known = o.getTarget().accept(this, known); } for (Expression<?> g : md.getGroupBy()) { known = g.accept(this, known); } if (md.getHaving() != null) { known = md.getHaving().accept(this, known); } if (md.getWhere() != null) { md.getWhere().accept(this, known); } return old; }
@Override public Set<Expression<?>> visit(SubQueryExpression<?> expr, Set<Expression<?>> known) { Set<Expression<?>> old = known; final QueryMetadata md = expr.getMetadata(); known = visitJoins(md.getJoins(), known); for (Expression<?> p : md.getProjection()) { known = p.accept(this, known); } for (OrderSpecifier<?> o : md.getOrderBy()) { known = o.getTarget().accept(this, known); } for (Expression<?> g : md.getGroupBy()) { known = g.accept(this, known); } if (md.getHaving() != null) { known = md.getHaving().accept(this, known); } if (md.getWhere() != null) { known = md.getWhere().accept(this, known); } return old; }
final Predicate where = metadata.getWhere(); final List<? extends Expression<?>> groupBy = metadata.getGroupBy(); final Predicate having = metadata.getHaving(); final List<OrderSpecifier<?>> orderBy = metadata.getOrderBy();
EBoolean where = metadata.getWhere(); List<? extends Expr<?>> groupBy = metadata.getGroupBy(); EBoolean having = metadata.getHaving(); List<OrderSpecifier<?>> orderBy = metadata.getOrderBy();
final Predicate where = metadata.getWhere(); final List<? extends Expression<?>> groupBy = metadata.getGroupBy(); final Predicate having = metadata.getHaving(); final List<OrderSpecifier<?>> orderBy = metadata.getOrderBy(); final Set<QueryFlag> flags = metadata.getFlags();
public void serializeUnion(Expression<?> union, QueryMetadata metadata, boolean unionAll) { final List<? extends Expression<?>> groupBy = metadata.getGroupBy(); final Predicate having = metadata.getHaving(); final List<OrderSpecifier<?>> orderBy = metadata.getOrderBy(); final Set<QueryFlag> flags = metadata.getFlags();
md.addGroupBy(e.accept(this, null)); Predicate having = expr.getMetadata().getHaving(); if (having != null) { md.addHaving((Predicate)having.accept(this, null));