@Override public String toString() { final int maxLen = 10; return "FunctionCall [func=" + name + ", args=" + (args != null ? args.subList(0, Math.min(args.size(), maxLen)) : null) + ", pos=" + pos + "]"; }
private static Character escapeString(FunctionCall call) { if (call.args.size() > 2) { return ((QuotedString) call.args.get(2)).value.charAt(0); } return null; }
@Override public Void visitFunctionHolderExpression(FunctionHolderExpression holder, StringBuilder sb) throws RuntimeException { ImmutableList<LogicalExpression> args = holder.args; sb.append(holder.getName()); sb.append("("); for (int i = 0; i < args.size(); i++) { if (i != 0) { sb.append(", "); } args.get(i).accept(this, sb); } sb.append(") "); return null; }
@Override public Void visitFunctionCall(FunctionCall call, StringBuilder sb) throws RuntimeException { ImmutableList<LogicalExpression> args = call.args; sb.append(call.getName()); sb.append("("); for (int i = 0; i < args.size(); i++) { if (i != 0) { sb.append(", "); } args.get(i).accept(this, sb); } sb.append(") "); return null; }
@Override public LogicalExpression visitFunctionHolderExpression(FunctionHolderExpression holder, Void value) throws RuntimeException { List<LogicalExpression> args = Lists.newArrayList(); for (int i = 0; i < holder.args.size(); ++i) { LogicalExpression newExpr = holder.args.get(i).accept(this, value); assert newExpr != null; args.add(newExpr); } //replace with a new function call, since its argument could be changed. return holder.copy(args); }
private static CompareFunctionsProcessor processWithEvaluator(FunctionCall call, CompareFunctionsProcessor evaluator) { String functionName = call.getName(); LogicalExpression nameArg = call.args.get(0); LogicalExpression valueArg = call.args.size() >= 2 ? call.args.get(1) : null; if (valueArg != null) { if (VALUE_EXPRESSION_CLASSES.contains(nameArg.getClass())) { LogicalExpression swapArg = valueArg; valueArg = nameArg; nameArg = swapArg; evaluator.functionName = COMPARE_FUNCTIONS_TRANSPOSE_MAP.get(functionName); } evaluator.success = nameArg.accept(evaluator, valueArg); } return evaluator; }
public static KafkaNodeProcessor process(FunctionCall call) { String functionName = call.getName(); LogicalExpression nameArg = call.args.get(0); LogicalExpression valueArg = call.args.size() >= 2? call.args.get(1) : null; KafkaNodeProcessor evaluator = new KafkaNodeProcessor(functionName); if (VALUE_EXPRESSION_CLASSES.contains(nameArg.getClass())) { LogicalExpression swapArg = valueArg; valueArg = nameArg; nameArg = swapArg; evaluator.functionName = COMPARE_FUNCTIONS_TRANSPOSE_MAP.get(functionName); } evaluator.success = nameArg.accept(evaluator, valueArg); return evaluator; }
@Override public Boolean visitFunctionHolderExpression(FunctionHolderExpression holder, ErrorCollector errors) { boolean allArgsAreConstant = true; for (int i = 0; i < holder.args.size(); i++) { boolean thisArgIsConstant = holder.args.get(i).accept(this, errors); if (!thisArgIsConstant) { allArgsAreConstant = false; if (holder.argConstantOnly(i)) { errors.addGeneralError( // holder.args.get(i).getPosition(), // String.format("Function %s expects constant input for argument number %d", holder.getName(), i)); } } } return allArgsAreConstant; }
@Override public Boolean visitFunctionHolderExpression(FunctionHolderExpression holder, ErrorCollector errors) { if (holder.isAggregating()) { for (int i = 0; i < holder.args.size(); i++) { LogicalExpression e = holder.args.get(i); if(e.accept(this, errors)) { errors.addGeneralError(e.getPosition(), String.format("Aggregating function call %s includes nested aggregations at arguments number %d. " + "This isn't allowed.", holder.getName(), i)); } } return true; } else { for (LogicalExpression e : holder.args) { if (e.accept(this, errors)) { return true; } } return false; } }
protected static <T extends CompareFunctionsProcessor> T createFunctionsProcessorInstanceInternal(FunctionCall call, boolean nullComparatorSupported, T evaluator) { LogicalExpression nameArg = call.args.get(0); LogicalExpression valueArg = call.args.size() >= 2 ? call.args.get(1) : null; if (valueArg != null) { // binary function if (VALUE_EXPRESSION_CLASSES.contains(nameArg.getClass())) { LogicalExpression swapArg = valueArg; valueArg = nameArg; nameArg = swapArg; evaluator.setFunctionName(COMPARE_FUNCTIONS_TRANSPOSE_MAP.get(evaluator.getFunctionName())); } evaluator.setSuccess(nameArg.accept(evaluator, valueArg)); } else if (nullComparatorSupported && call.args.get(0) instanceof SchemaPath) { evaluator.setSuccess(true); evaluator.setPath((SchemaPath) nameArg); } return evaluator; }
case "booleanOr": HBaseScanSpec firstScanSpec = args.get(0).accept(this, null); for (int i = 1; i < args.size(); ++i) { HBaseScanSpec nextScanSpec = args.get(i).accept(this, null); if (firstScanSpec != null && nextScanSpec != null) {
case "booleanOr": HBaseScanSpec firstScanSpec = args.get(0).accept(this, null); for (int i = 1; i < args.size(); ++i) { HBaseScanSpec nextScanSpec = args.get(i).accept(this, null); if (firstScanSpec != null && nextScanSpec != null) {
case "booleanOr": nodeScanSpec = args.get(0).accept(this, null); for (int i = 1; i < args.size(); ++i) { JsonScanSpec nextScanSpec = args.get(i).accept(this, null); if (nodeScanSpec != null && nextScanSpec != null) {
private static Character escapeString(FunctionCall call) { if (call.args.size() > 2) { return ((QuotedString) call.args.get(2)).value.charAt(0); } return null; }
@Override int copyIntoArray(Object[] dst, int offset) { // this loop is faster for RandomAccess instances, which ImmutableLists are int size = size(); for (int i = 0; i < size; i++) { dst[offset + i] = get(i); } return offset + size; }
/** * Returns a view of this immutable list in reverse order. For example, {@code * ImmutableList.of(1, 2, 3).reverse()} is equivalent to {@code * ImmutableList.of(3, 2, 1)}. * * @return a view of this immutable list in reverse order * @since 7.0 */ public ImmutableList<E> reverse() { return (size() <= 1) ? this : new ReverseImmutableList<E>(this); }
/** * Returns the ancestor of the current domain at the given number of levels "higher" (rightward) * in the subdomain list. The number of levels must be non-negative, and less than {@code N-1}, * where {@code N} is the number of parts in the domain. * * <p>TODO: Reasonable candidate for addition to public API. */ private InternetDomainName ancestor(int levels) { return from(DOT_JOINER.join(parts.subList(levels, parts.size()))); }