@Override protected R visitQuerySpecification(final QuerySpecification node, final C context) { process(node.getSelect(), context); process(node.getFrom(), context); if (node.getWhere().isPresent()) { process(node.getWhere().get(), context); } if (node.getGroupBy().isPresent()) { process(node.getGroupBy().get(), context); } if (node.getHaving().isPresent()) { process(node.getHaving().get(), context); } return null; }
@Override protected R visitQuerySpecification(final QuerySpecification node, final C context) { process(node.getSelect(), context); process(node.getFrom(), context); if (node.getWhere().isPresent()) { process(node.getWhere().get(), context); } if (node.getGroupBy().isPresent()) { process(node.getGroupBy().get(), context); } if (node.getHaving().isPresent()) { process(node.getHaving().get(), context); } return null; }
@Override protected Node visitQuerySpecification(final QuerySpecification node, final Node parent) { node.setParent(parent); process(node.getSelect(), node); process(node.getFrom(), node); if (node.getWhere().isPresent()) { process(node.getWhere().get(), node); } if (node.getGroupBy().isPresent()) { process(node.getGroupBy().get(), node); } if (node.getHaving().isPresent()) { process(node.getHaving().get(), node); } return null; }
@Override protected Void visitQuerySpecification(final QuerySpecification node, final Integer indent) { process(node.getSelect(), indent); append(indent, "FROM "); processRelation(node.getFrom(), indent); builder.append('\n'); append(indent, " "); builder.append('\n'); if (node.getWhere().isPresent()) { append(indent, "WHERE " + ExpressionFormatter.formatExpression(node.getWhere().get())) .append('\n'); } if (node.getGroupBy().isPresent()) { append(indent, "GROUP BY " + (node.getGroupBy().get().isDistinct() ? " DISTINCT " : "") + ExpressionFormatter .formatGroupBy(node.getGroupBy().get().getGroupingElements())) .append('\n'); } if (node.getHaving().isPresent()) { append(indent, "HAVING " + ExpressionFormatter.formatExpression(node.getHaving().get())) .append('\n'); } if (node.getLimit().isPresent()) { append(indent, "LIMIT " + node.getLimit().get()) .append('\n'); } return null; }
: Optional.empty(); final Optional<GroupBy> groupBy = node.getGroupBy().isPresent() ? Optional.ofNullable((GroupBy) process(node.getGroupBy().get(), context)) : Optional.empty();
query.getWindowExpression(), query.getWhere(), query.getGroupBy(), query.getHaving(), getTextIfPresent(context.limit)