@Nullable @Override public DimFilter toDruidFilter( PlannerContext plannerContext, RowSignature rowSignature, RexNode rexNode ) { final List<RexNode> operands = ((RexCall) rexNode).getOperands(); final DruidExpression druidExpression = Expressions.toDruidExpression( plannerContext, rowSignature, operands.get(0) ); if (druidExpression == null || !druidExpression.isSimpleExtraction()) { return null; } return new LikeDimFilter( druidExpression.getSimpleExtraction().getColumn(), RexLiteral.stringValue(operands.get(1)), operands.size() > 2 ? RexLiteral.stringValue(operands.get(2)) : null, druidExpression.getSimpleExtraction().getExtractionFn() ); } }
&& (operands.size() <= 3 || operands.get(3).isA(SqlKind.LITERAL))) { final Period period = new Period(RexLiteral.stringValue(operands.get(1))); final DateTime origin = operands.size() > 2 && !RexLiteral.isNullLiteral(operands.get(2)) final DateTimeZone timeZone = operands.size() > 3 && !RexLiteral.isNullLiteral(operands.get(3)) ? DateTimes.inferTzFromString(RexLiteral.stringValue(operands.get(3))) : plannerContext.getTimeZone(); final PeriodGranularity granularity = new PeriodGranularity(period, origin, timeZone);
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { final RexCall call = (RexCall) rexNode; final RexNode timeArg = call.getOperands().get(0); final DruidExpression timeExpression = Expressions.toDruidExpression(plannerContext, rowSignature, timeArg); if (timeExpression == null) { return null; } final TimestampExtractExprMacro.Unit unit = TimestampExtractExprMacro.Unit.valueOf( StringUtils.toUpperCase(RexLiteral.stringValue(call.getOperands().get(1))) ); final DateTimeZone timeZone = call.getOperands().size() > 2 && !RexLiteral.isNullLiteral(call.getOperands().get(2)) ? DateTimes.inferTzFromString(RexLiteral.stringValue(call.getOperands().get(2))) : plannerContext.getTimeZone(); return applyTimeExtract(timeExpression, unit, timeZone); } }
? RexLiteral.stringValue(call.getOperands().get(1)) : "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"; final DateTimeZone timeZone = call.getOperands().size() > 2 && !RexLiteral.isNullLiteral(call.getOperands().get(2)) ? DateTimes.inferTzFromString(RexLiteral.stringValue(call.getOperands().get(2))) : plannerContext.getTimeZone();
String base64EncodedBloomKFilter = RexLiteral.stringValue(operands.get(1)); final byte[] decoded = StringUtils.decodeBase64String(base64EncodedBloomKFilter); BloomKFilter filter;
val = String.valueOf(RexLiteral.value(rhsLiteral)); } else if (SqlTypeName.CHAR_TYPES.contains(rhsLiteral.getTypeName())) { val = String.valueOf(RexLiteral.stringValue(rhsLiteral)); } else if (SqlTypeName.TIMESTAMP == rhsLiteral.getTypeName() || SqlTypeName.DATE == rhsLiteral.getTypeName()) { val = String.valueOf(
return DruidExpression.fromExpression(DruidExpression.numberLiteral(months)); } else if (SqlTypeName.STRING_TYPES.contains(sqlTypeName)) { return DruidExpression.fromExpression(DruidExpression.stringLiteral(RexLiteral.stringValue(rexNode))); } else if (SqlTypeName.TIMESTAMP == sqlTypeName || SqlTypeName.DATE == sqlTypeName) { if (RexLiteral.isNullLiteral(rexNode)) {
String stringValue() { return RexLiteral.stringValue(literal); }
public String stringValue() { return RexLiteral.stringValue(literal); }
private NamedFieldExpression(RexLiteral literal) { this.name = literal == null ? null : RexLiteral.stringValue(literal); }
@SuppressWarnings("deprecation") @Override public String getStringLiteralOperand(int ordinal) { return RexLiteral.stringValue(operands.get(ordinal)); }
@SuppressWarnings("deprecation") @Override public String getStringLiteralOperand(int ordinal) { return RexLiteral.stringValue(operands.get(ordinal)); }
int registerExpression(RexNode node) { switch (node.getKind()) { case AS: final List<RexNode> operands = ((RexCall) node).operands; int i = registerExpression(operands.get(0)); names.set(i, RexLiteral.stringValue(operands.get(1))); return i; } int i = extraNodes.indexOf(node); if (i < 0) { i = extraNodes.size(); extraNodes.add(node); names.add(null); } return i; }
int registerExpression(RexNode node) { switch (node.getKind()) { case AS: final List<RexNode> operands = ((RexCall) node).operands; int i = registerExpression(operands.get(0)); names.set(i, RexLiteral.stringValue(operands.get(1))); return i; } int i = extraNodes.indexOf(node); if (i < 0) { i = extraNodes.size(); extraNodes.add(node); names.add(null); } return i; }
@Override public SqlNode toSql(RexProgram program, RexNode rex) { if (rex.getKind() == SqlKind.LITERAL) { final RexLiteral literal = (RexLiteral) rex; if (literal.getTypeName().getFamily() == SqlTypeFamily.CHARACTER) { return new SqlIdentifier(RexLiteral.stringValue(literal), POS); } } return super.toSql(program, rex); } }
@Override public SqlNode toSql(RexProgram program, RexNode rex) { if (rex.getKind() == SqlKind.LITERAL) { final RexLiteral literal = (RexLiteral) rex; if (literal.getTypeName().getFamily() == SqlTypeFamily.CHARACTER) { return new SqlIdentifier(RexLiteral.stringValue(literal), POS); } } return super.toSql(program, rex); } }
private static PathSegment convertLiteral(RexLiteral literal) { switch (literal.getType().getSqlTypeName()) { case CHAR: return new PathSegment.NameSegment(RexLiteral.stringValue(literal)); case INTEGER: return new PathSegment.ArraySegment(RexLiteral.intValue(literal)); default: return null; } }
private PathSegment convertLiteral(RexLiteral literal) { switch (literal.getType().getSqlTypeName().getFamily()) { case CHARACTER: return new NameSegment(RexLiteral.stringValue(literal)); case NUMERIC: return new ArraySegment(RexLiteral.intValue(literal)); default: return null; } }
Object value() { if (isIntegral()) { return longValue(); } else if (isFloatingPoint()) { return doubleValue(); } else if (isBoolean()) { return booleanValue(); } else if (isString()) { return RexLiteral.stringValue(literal); } else { return rawValue(); } }
Object value() { if (isIntegral()) { return longValue(); } else if (isFloatingPoint()) { return doubleValue(); } else if (isBoolean()) { return booleanValue(); } else if (isString()) { return RexLiteral.stringValue(literal); } else { return rawValue(); } }