@Override public final String toString() { return ExpressionFormatter.formatExpression(this, Optional.empty()); // This will not replace parameters, but we don't have access to them here } }
static String formatGroupBy(List<GroupingElement> groupingElements) { return formatGroupBy(groupingElements, Optional.empty()); }
@Override protected String visitSymbolReference(SymbolReference node, Void context) { return formatIdentifier(node.getName()); }
private String formatColumnDefinition(ColumnDefinition column) { return formatExpression(column.getName(), parameters) + " " + column.getType() + column.getComment() .map(comment -> " COMMENT " + formatStringLiteral(comment)) .orElse("") + formatPropertiesSingleLine(column.getProperties()); }
append(indent, "WHERE " + formatExpression(node.getWhere().get(), parameters)) .append('\n'); append(indent, "GROUP BY " + (node.getGroupBy().get().isDistinct() ? " DISTINCT " : "") + formatGroupBy(node.getGroupBy().get().getGroupingElements())).append('\n'); append(indent, "HAVING " + formatExpression(node.getHaving().get(), parameters)) .append('\n');
static String formatGroupBy(List<GroupingElement> groupingElements, Optional<List<Expression>> parameters) { ImmutableList.Builder<String> resultStrings = ImmutableList.builder(); for (GroupingElement groupingElement : groupingElements) { String result = ""; if (groupingElement instanceof SimpleGroupBy) { List<Expression> columns = ((SimpleGroupBy) groupingElement).getExpressions(); if (columns.size() == 1) { result = formatExpression(getOnlyElement(columns), parameters); } else { result = formatGroupingSet(columns, parameters); } } else if (groupingElement instanceof GroupingSets) { result = format("GROUPING SETS (%s)", Joiner.on(", ").join( ((GroupingSets) groupingElement).getSets().stream() .map(e -> formatGroupingSet(e, parameters)) .iterator())); } else if (groupingElement instanceof Cube) { result = format("CUBE %s", formatGroupingSet(((Cube) groupingElement).getExpressions(), parameters)); } else if (groupingElement instanceof Rollup) { result = format("ROLLUP %s", formatGroupingSet(((Rollup) groupingElement).getExpressions(), parameters)); } resultStrings.add(result); } return Joiner.on(", ").join(resultStrings.build()); }
@Override protected String visitStringLiteral(StringLiteral node, Void context) { return formatStringLiteral(node.getValue()); }
@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 Void visitOrderBy(OrderBy node, Integer indent) { append(indent, formatOrderBy(node, parameters)) .append('\n'); return null; }
static String formatOrderBy(OrderBy orderBy, Optional<List<Expression>> parameters) { return "ORDER BY " + formatSortItems(orderBy.getSortItems(), parameters); }
int codePoint = iterator.nextInt(); checkArgument(codePoint >= 0, "Invalid UTF-8 encoding in characters: %s", s); if (isAsciiPrintable(codePoint)) { char ch = (char) codePoint; if (ch == '\\') {
private String formatColumnDefinition(ColumnDefinition column) { return formatExpression(column.getName(), parameters) + " " + column.getType() + column.getComment() .map(comment -> " COMMENT " + formatStringLiteral(comment)) .orElse("") + formatPropertiesSingleLine(column.getProperties()); }
append(indent, "WHERE " + formatExpression(node.getWhere().get(), parameters)) .append('\n'); append(indent, "GROUP BY " + (node.getGroupBy().get().isDistinct() ? " DISTINCT " : "") + formatGroupBy(node.getGroupBy().get().getGroupingElements())).append('\n'); append(indent, "HAVING " + formatExpression(node.getHaving().get(), parameters)) .append('\n');
static String formatGroupBy(List<GroupingElement> groupingElements, Optional<List<Expression>> parameters) { ImmutableList.Builder<String> resultStrings = ImmutableList.builder(); for (GroupingElement groupingElement : groupingElements) { String result = ""; if (groupingElement instanceof SimpleGroupBy) { List<Expression> columns = ((SimpleGroupBy) groupingElement).getExpressions(); if (columns.size() == 1) { result = formatExpression(getOnlyElement(columns), parameters); } else { result = formatGroupingSet(columns, parameters); } } else if (groupingElement instanceof GroupingSets) { result = format("GROUPING SETS (%s)", Joiner.on(", ").join( ((GroupingSets) groupingElement).getSets().stream() .map(e -> formatGroupingSet(e, parameters)) .iterator())); } else if (groupingElement instanceof Cube) { result = format("CUBE %s", formatGroupingSet(((Cube) groupingElement).getExpressions(), parameters)); } else if (groupingElement instanceof Rollup) { result = format("ROLLUP %s", formatGroupingSet(((Rollup) groupingElement).getExpressions(), parameters)); } resultStrings.add(result); } return Joiner.on(", ").join(resultStrings.build()); }
@Override protected String visitStringLiteral(StringLiteral node, Void context) { return formatStringLiteral(node.getValue()); }
@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 Void visitOrderBy(OrderBy node, Integer indent) { append(indent, formatOrderBy(node, parameters)) .append('\n'); return null; }
static String formatOrderBy(OrderBy orderBy, Optional<List<Expression>> parameters) { return "ORDER BY " + formatSortItems(orderBy.getSortItems(), parameters); }
int codePoint = iterator.nextInt(); checkArgument(codePoint >= 0, "Invalid UTF-8 encoding in characters: %s", s); if (isAsciiPrintable(codePoint)) { char ch = (char) codePoint; if (ch == '\\') {
@Override public final String toString() { return ExpressionFormatter.formatExpression(this, Optional.empty()); // This will not replace parameters, but we don't have access to them here } }