@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 OperatorConversions.convertCall(plannerContext, rowSignature, rexNode, "timestamp_parse"); } }
@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) ); }
@Nullable public static DruidExpression convertCall( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode, final String functionName, final Function<List<DruidExpression>, SimpleExtraction> simpleExtractionFunction ) { return convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> DruidExpression.of( simpleExtractionFunction == null ? null : simpleExtractionFunction.apply(druidExpressions), DruidExpression.functionCall(functionName, 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)) ); } }
@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 -> { if (operands.size() < 2) { throw new ISE("WTF?! Got binary operator[%s] with %s args?", operator.getName(), operands.size()); } return DruidExpression.fromExpression( StringUtils.format( "(%s)", joiner.join( operands.stream() .map(DruidExpression::getExpression) .collect(Collectors.toList()) ) ) ); } ); } }
@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( StringUtils.format( "(%s %s)", Iterables.getOnlyElement(operands).getExpression(), druidOperator ) ) ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, operands -> DruidExpression.fromExpression( StringUtils.format( "(%s %s)", druidOperator, Iterables.getOnlyElement(operands).getExpression() ) ) ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> { if (druidExpressions.size() > 1) { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.BOTH, druidExpressions.get(0), druidExpressions.get(1) ); } else { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.BOTH, druidExpressions.get(0), DruidExpression.fromExpression(DruidExpression.stringLiteral(" ")) ); } } ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, operands -> DruidExpression.fromExpression( StringUtils.format( "%s(%s)", druidOperator, Iterables.getOnlyElement(operands).getExpression() ) ) ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> { if (druidExpressions.size() > 1) { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.TRAILING, druidExpressions.get(0), druidExpressions.get(1) ); } else { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.TRAILING, druidExpressions.get(0), DruidExpression.fromExpression(DruidExpression.stringLiteral(" ")) ); } } ); } }
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> { if (druidExpressions.size() > 1) { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.LEADING, druidExpressions.get(0), druidExpressions.get(1) ); } else { return TrimOperatorConversion.makeTrimExpression( SqlTrimFunction.Flag.LEADING, druidExpressions.get(0), DruidExpression.fromExpression(DruidExpression.stringLiteral(" ")) ); } } ); } }
return OperatorConversions.convertCall( plannerContext, rowSignature,
@Override public DruidExpression toDruidExpression( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { return OperatorConversions.convertCall( plannerContext, rowSignature, rexNode, druidExpressions -> DruidExpression.of( null, StringUtils.format( "(%s + 1)", DruidExpression.functionCall("strpos", druidExpressions) ) ) ); } }
return OperatorConversions.convertCall( plannerContext, rowSignature,
return OperatorConversions.convertCall( plannerContext, rowSignature,
return OperatorConversions.convertCall( plannerContext, rowSignature,
return OperatorConversions.convertCall( plannerContext, rowSignature,