@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall(plannerContext, rowSignature, rexNode, "timestamp_shift"); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return baseConversion.toDruidExpression(plannerContext, rowSignature, rexNode); } }
public static String stringLiteral(final String s) { return s == null ? nullLiteral() : "'" + escape(s) + "'"; }
public DimensionSpec toDimensionSpec() { if (expression.isSimpleExtraction()) { return expression.getSimpleExtraction().toDimensionSpec(outputName, outputType); } else { return new DefaultDimensionSpec(getVirtualColumnName(), getOutputName(), outputType); } }
@Test public void testPower() { testExpression( rexBuilder.makeCall(SqlStdOperatorTable.POWER, inputRef("a"), integerLiteral(2)), DruidExpression.fromExpression("pow(\"a\",2)"), 100.0 ); }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> DruidExpression.of( null, DruidExpression.functionCall("concat", druidExpressions) ) ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, operands -> DruidExpression.fromExpression(DruidExpression.functionCall(druidFunctionName, operands)) ); } }
public static DruidExpression fromColumn(final String column) { return new DruidExpression(SimpleExtraction.of(column, null), StringUtils.format("\"%s\"", escape(column))); }
@Test public void testCharacterLength() { testExpression( rexBuilder.makeCall( SqlStdOperatorTable.CHARACTER_LENGTH, inputRef("s") ), DruidExpression.fromExpression("strlen(\"s\")"), 3L ); }
public static DruidExpression fromFunctionCall(final String functionName, final List<DruidExpression> args) { return new DruidExpression(null, functionCall(functionName, args)); }
public boolean isDirectColumnAccess() { return simpleExtraction != null && simpleExtraction.getExtractionFn() == null; }
public SimpleExtraction cascade(final ExtractionFn nextExtractionFn) { return new SimpleExtraction( column, ExtractionFns.cascade(extractionFn, Preconditions.checkNotNull(nextExtractionFn, "nextExtractionFn")) ); }
@Nullable public static DruidExpression convertCall( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode, final String functionName ) { return convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> DruidExpression.fromFunctionCall(functionName, druidExpressions) ); }
public static DruidExpression fromExpression(final String expression) { return new DruidExpression(null, expression); }
public static OperatorBuilder operatorBuilder(final String name) { return new OperatorBuilder(name); }
public static SimpleExtraction of(String column, ExtractionFn extractionFn) { return new SimpleExtraction(column, extractionFn); }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> DruidExpression.of( null, DruidExpression.functionCall("concat", druidExpressions) ) ); } }
public static DruidExpression of(final SimpleExtraction simpleExtraction, final String expression) { return new DruidExpression(simpleExtraction, expression); }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall(plannerContext, rowSignature, rexNode, "timestamp_parse"); } }
public DruidExpression map( final Function<SimpleExtraction, SimpleExtraction> extractionMap, final Function<String, String> expressionMap ) { return new DruidExpression( simpleExtraction == null ? null : extractionMap.apply(simpleExtraction), expressionMap.apply(expression) ); }