@Override public String visitWindow(Window node, Void context) { List<String> parts = new ArrayList<>(); if (!node.getPartitionBy().isEmpty()) { parts.add("PARTITION BY " + joinExpressions(node.getPartitionBy())); } if (node.getOrderBy().isPresent()) { parts.add(formatOrderBy(node.getOrderBy().get(), parameters)); } if (node.getFrame().isPresent()) { parts.add(process(node.getFrame().get(), context)); } return '(' + Joiner.on(' ').join(parts) + ')'; }
@Override public String visitWindow(Window node, Void context) { List<String> parts = new ArrayList<>(); if (!node.getPartitionBy().isEmpty()) { parts.add("PARTITION BY " + joinExpressions(node.getPartitionBy())); } if (node.getOrderBy().isPresent()) { parts.add(formatOrderBy(node.getOrderBy().get(), parameters)); } if (node.getFrame().isPresent()) { parts.add(process(node.getFrame().get(), context)); } return '(' + Joiner.on(' ').join(parts) + ')'; }
@Override protected String visitFunctionCall(FunctionCall node, Void context) { StringBuilder builder = new StringBuilder(); String arguments = joinExpressions(node.getArguments()); if (node.getArguments().isEmpty() && "count".equalsIgnoreCase(node.getName().getSuffix())) { arguments = "*"; } if (node.isDistinct()) { arguments = "DISTINCT " + arguments; } builder.append(formatQualifiedName(node.getName())) .append('(').append(arguments); if (node.getOrderBy().isPresent()) { builder.append(' ').append(formatOrderBy(node.getOrderBy().get(), parameters)); } builder.append(')'); if (node.getFilter().isPresent()) { builder.append(" FILTER ").append(visitFilter(node.getFilter().get(), context)); } if (node.getWindow().isPresent()) { builder.append(" OVER ").append(visitWindow(node.getWindow().get(), context)); } return builder.toString(); }
@Override protected String visitFunctionCall(FunctionCall node, Void context) { StringBuilder builder = new StringBuilder(); String arguments = joinExpressions(node.getArguments()); if (node.getArguments().isEmpty() && "count".equalsIgnoreCase(node.getName().getSuffix())) { arguments = "*"; } if (node.isDistinct()) { arguments = "DISTINCT " + arguments; } builder.append(formatQualifiedName(node.getName())) .append('(').append(arguments); if (node.getOrderBy().isPresent()) { builder.append(' ').append(formatOrderBy(node.getOrderBy().get(), parameters)); } builder.append(')'); if (node.getFilter().isPresent()) { builder.append(" FILTER ").append(visitFilter(node.getFilter().get(), context)); } if (node.getWindow().isPresent()) { builder.append(" OVER ").append(visitWindow(node.getWindow().get(), context)); } return builder.toString(); }
public String visitGroupingOperation(GroupingOperation node, Void context) { return "GROUPING (" + joinExpressions(node.getGroupingColumns()) + ")"; }
@Override protected String visitCoalesceExpression(CoalesceExpression node, Void context) { return "COALESCE(" + joinExpressions(node.getOperands()) + ")"; }
@Override protected String visitCoalesceExpression(CoalesceExpression node, Void context) { return "COALESCE(" + joinExpressions(node.getOperands()) + ")"; }
@Override protected String visitInListExpression(InListExpression node, Void context) { return "(" + joinExpressions(node.getValues()) + ")"; }
public String visitGroupingOperation(GroupingOperation node, Void context) { return "GROUPING (" + joinExpressions(node.getGroupingColumns()) + ")"; }
@Override protected String visitInListExpression(InListExpression node, Void context) { return "(" + joinExpressions(node.getValues()) + ")"; }