@Override protected String visitFunctionCall(FunctionCall node, Boolean unmangleNames) { StringBuilder builder = new StringBuilder(); String arguments = joinExpressions(node.getArguments(), unmangleNames); if (node.getArguments().isEmpty() && "count".equalsIgnoreCase(node.getName().getSuffix())) { arguments = "*"; } if (node.isDistinct()) { arguments = "DISTINCT " + arguments; } if (unmangleNames && node.getName().toString().startsWith(QueryUtil.FIELD_REFERENCE_PREFIX)) { checkState(node.getArguments().size() == 1, "Expected only one argument to field reference"); QualifiedName name = QualifiedName.of(QueryUtil.unmangleFieldReference(node.getName().toString())); builder.append(arguments).append(".").append(name); } else { builder.append(formatQualifiedName(node.getName())) .append('(').append(arguments).append(')'); } if (node.getWindow().isPresent()) { builder.append(" OVER ").append(visitWindow(node.getWindow().get(), unmangleNames)); } return builder.toString(); }
@Override protected String visitFunctionCall(FunctionCall node, Boolean unmangleNames) { StringBuilder builder = new StringBuilder(); String arguments = joinExpressions(node.getArguments(), unmangleNames); if (node.getArguments().isEmpty() && "count".equalsIgnoreCase(node.getName().getSuffix())) { arguments = "*"; } if (node.isDistinct()) { arguments = "DISTINCT " + arguments; } if (unmangleNames && node.getName().toString().startsWith(QueryUtil.FIELD_REFERENCE_PREFIX)) { checkState(node.getArguments().size() == 1, "Expected only one argument to field reference"); QualifiedName name = QualifiedName.of(QueryUtil.unmangleFieldReference(node.getName().toString())); builder.append(arguments).append(".").append(name); } else { builder.append(formatQualifiedName(node.getName())) .append('(').append(arguments).append(')'); } if (node.getWindow().isPresent()) { builder.append(" OVER ").append(visitWindow(node.getWindow().get(), unmangleNames)); } return builder.toString(); }