@Nonnull @Override public ExprEval getObject() { return expression.eval(bindings); }
public static DateTimeZone toTimeZone(final Expr timeZoneArg) { if (!timeZoneArg.isLiteral()) { throw new IAE("Time zone must be a literal"); } final Object literalValue = timeZoneArg.getLiteralValue(); return literalValue == null ? DateTimeZone.UTC : DateTimes.inferTzFromString((String) literalValue); }
@Override public Expr apply(final List<Expr> args) { if (args.size() < 1 || args.size() > 2) { throw new IAE("Function[%s] must have 1 or 2 arguments", name()); } if (args.size() == 1) { return new TrimStaticCharsExpr(mode, args.get(0), DEFAULT_CHARS); } else { final Expr charsArg = args.get(1); if (charsArg.isLiteral()) { final String charsString = charsArg.eval(ExprUtils.nilBindings()).asString(); final char[] chars = charsString == null ? EMPTY_CHARS : charsString.toCharArray(); return new TrimStaticCharsExpr(mode, args.get(0), chars); } else { return new TrimDynamicCharsExpr(mode, args.get(0), args.get(1)); } } }
final String formatString = args.size() > 1 ? (String) args.get(1).getLiteralValue() : null; final DateTimeZone timeZone; if (args.size() > 2 && args.get(2).getLiteralValue() != null) { timeZone = DateTimes.inferTzFromString((String) args.get(2).getLiteralValue()); } else { timeZone = DateTimeZone.UTC;
final DimensionExpression dimension = dimensions.get(i); if (Parser.parse(dimension.getDruidExpression().getExpression(), plannerContext.getExprMacroTable()) .isLiteral() && !aggregateProjectBits.get(i)) { dimensions.remove(i);
@Override public Expr apply(final List<Expr> args) { if (args.size() < 1 || args.size() > 2) { throw new IAE("Function[%s] must have 1 or 2 arguments", name()); } if (args.size() == 1) { return new TrimStaticCharsExpr(mode, args.get(0), DEFAULT_CHARS); } else { final Expr charsArg = args.get(1); if (charsArg.isLiteral()) { final String charsString = charsArg.eval(ExprUtils.nilBindings()).asString(); final char[] chars = charsString == null ? EMPTY_CHARS : charsString.toCharArray(); return new TrimStaticCharsExpr(mode, args.get(0), chars); } else { return new TrimDynamicCharsExpr(mode, args.get(0), args.get(1)); } } }
final String formatString = args.size() > 1 ? (String) args.get(1).getLiteralValue() : null; final DateTimeZone timeZone; if (args.size() > 2 && args.get(2).getLiteralValue() != null) { timeZone = DateTimes.inferTzfromString((String) args.get(2).getLiteralValue()); } else { timeZone = DateTimeZone.UTC;
final DimensionExpression dimension = dimensions.get(i); if (Parser.parse(dimension.getDruidExpression().getExpression(), plannerContext.getExprMacroTable()) .isLiteral() && !aggregateProjectBits.get(i)) { dimensions.remove(i);
final Expr indexExpr = args.size() > 2 ? args.get(2) : null; if (!patternExpr.isLiteral() || (indexExpr != null && !indexExpr.isLiteral())) { throw new IAE("Function[%s] pattern and index must be literals", name()); final Pattern pattern = Pattern.compile(String.valueOf(patternExpr.getLiteralValue())); final int index = indexExpr == null ? 0 : ((Number) indexExpr.getLiteralValue()).intValue(); class RegexpExtractExpr implements Expr
final Expr escapeExpr = args.size() > 2 ? args.get(2) : null; if (!patternExpr.isLiteral() || (escapeExpr != null && !escapeExpr.isLiteral())) { throw new IAE("pattern and escape must be literals"); final String escape = escapeExpr == null ? null : (String) escapeExpr.getLiteralValue(); final Character escapeChar; NullHandling.nullToEmptyIfNeeded((String) patternExpr.getLiteralValue()), escapeChar );
public static List<String> findRequiredBindings(Expr expr) { final Set<String> found = new LinkedHashSet<>(); expr.visit( new Expr.Visitor() { @Override public void visit(Expr expr) { if (expr instanceof IdentifierExpr) { found.add(expr.toString()); } } } ); return Lists.newArrayList(found); }
final Expr lookupExpr = args.get(1); if (!lookupExpr.isLiteral() || lookupExpr.getLiteralValue() == null) { throw new IAE("Function[%s] second argument must be a registered lookup name", name()); final String lookupName = lookupExpr.getLiteralValue().toString(); final RegisteredLookupExtractionFn extractionFn = new RegisteredLookupExtractionFn( lookupReferencesManager,
@Override public void visit(final Visitor visitor) { for (Expr arg : args) { arg.visit(visitor); } visitor.visit(this); } }
@Override public Object eval(final Row row) { return expr.eval(name -> getValueFromRow(row, name)).value(); } }
Preconditions.checkArgument(args.get(1).isLiteral(), "Function[%s] format arg must be a literal", name()); formatString = (String) args.get(1).getLiteralValue(); } else { formatString = null;