@Nullable public String getVirtualColumnName() { return expression.isSimpleExtraction() ? null : Calcites.makePrefixedName(outputName, "v"); }
public List<VirtualColumn> getVirtualColumns(final ExprMacroTable macroTable) { if (expression.isSimpleExtraction()) { return ImmutableList.of(); } else { return ImmutableList.of(expression.toVirtualColumn(getVirtualColumnName(), outputType, macroTable)); } }
@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() ); } }
private static DruidExpression toDruidExpressionForSimpleAggregator( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { final DruidExpression druidExpression = Expressions.toDruidExpression(plannerContext, rowSignature, rexNode); if (druidExpression == null) { return null; } if (druidExpression.isSimpleExtraction() && (!druidExpression.isDirectColumnAccess() || rowSignature.getColumnType(druidExpression.getDirectColumn()) == ValueType.STRING)) { // Aggregators are unable to implicitly cast strings to numbers. So remove the simple extraction in this case. return druidExpression.map(simpleExtraction -> null, Function.identity()); } else { return druidExpression; } } }
public DimensionSpec toDimensionSpec() { if (expression.isSimpleExtraction()) { return expression.getSimpleExtraction().toDimensionSpec(outputName, outputType); } else { return new DefaultDimensionSpec(getVirtualColumnName(), getOutputName(), outputType); } }
operands.get(0) ); if (druidExpression == null || !druidExpression.isSimpleExtraction()) { return null; if (druidExpression.isSimpleExtraction()) { return new BloomDimFilter( druidExpression.getSimpleExtraction().getColumn(),
: null; if (arg.isSimpleExtraction() && patternExpr.isLiteral() && (indexExpr == null || indexExpr.isLiteral())) { return arg.getSimpleExtraction().cascade( new RegexDimExtractionFn(
final Expr lookupNameExpr = inputExpressions.get(1).parse(plannerContext.getExprMacroTable()); if (arg.isSimpleExtraction() && lookupNameExpr.isLiteral()) { return arg.getSimpleExtraction().cascade( new RegisteredLookupExtractionFn(
if (arg.isSimpleExtraction()) { dimensionSpec = arg.getSimpleExtraction().toDimensionSpec(null, inputType); } else {
if (druidExpression == null || !druidExpression.isSimpleExtraction()) { return null; if (!lhsExpression.isSimpleExtraction()) { return null;
@Nullable public String getVirtualColumnName() { return expression.isSimpleExtraction() ? null : Calcites.makePrefixedName(outputName, "v"); }
public List<VirtualColumn> getVirtualColumns(final ExprMacroTable macroTable) { if (expression.isSimpleExtraction()) { return ImmutableList.of(); } else { return ImmutableList.of(expression.toVirtualColumn(getVirtualColumnName(), outputType, macroTable)); } }
private static DruidExpression toDruidExpressionForSimpleAggregator( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { final DruidExpression druidExpression = Expressions.toDruidExpression(plannerContext, rowSignature, rexNode); if (druidExpression == null) { return null; } if (druidExpression.isSimpleExtraction() && (!druidExpression.isDirectColumnAccess() || rowSignature.getColumnType(druidExpression.getDirectColumn()) == ValueType.STRING)) { // Aggregators are unable to implicitly cast strings to numbers. So remove the simple extraction in this case. return druidExpression.map(simpleExtraction -> null, Function.identity()); } else { return druidExpression; } } }
public DimensionSpec toDimensionSpec() { if (expression.isSimpleExtraction()) { return expression.getSimpleExtraction().toDimensionSpec(outputName, outputType); } else { return new DefaultDimensionSpec(getVirtualColumnName(), getOutputName(), outputType); } }
: null; if (arg.isSimpleExtraction() && patternExpr.isLiteral() && (indexExpr == null || indexExpr.isLiteral())) { return arg.getSimpleExtraction().cascade( new RegexDimExtractionFn(
final Expr lookupNameExpr = inputExpressions.get(1).parse(plannerContext.getExprMacroTable()); if (arg.isSimpleExtraction() && lookupNameExpr.isLiteral()) { return arg.getSimpleExtraction().cascade( new RegisteredLookupExtractionFn(
if (arg.isSimpleExtraction()) { dimensionSpec = arg.getSimpleExtraction().toDimensionSpec(null, inputType); } else {
if (druidExpression == null || !druidExpression.isSimpleExtraction()) { return null; if (!lhsExpression.isSimpleExtraction()) { return null; operands.get(0) ); if (druidExpression == null || !druidExpression.isSimpleExtraction()) { return null;