public boolean isDirectColumnAccess() { return simpleExtraction != null && simpleExtraction.getExtractionFn() == null; }
/** * Return the "natural" {@link StringComparator} for an extraction from this row signature. This will be a * lexicographic comparator for String types and a numeric comparator for Number types. * * @param simpleExtraction extraction from this kind of row * * @return natural comparator */ @Nonnull public StringComparator naturalStringComparator(final SimpleExtraction simpleExtraction) { Preconditions.checkNotNull(simpleExtraction, "simpleExtraction"); if (simpleExtraction.getExtractionFn() != null || getColumnType(simpleExtraction.getColumn()) == ValueType.STRING) { return StringComparators.LEXICOGRAPHIC; } else { return StringComparators.NUMERIC; } }
@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() ); } }
druidExpression.getSimpleExtraction().getColumn(), holder, druidExpression.getSimpleExtraction().getExtractionFn() ); } else {
druidExpression.getSimpleExtraction().getColumn(), NullHandling.defaultStringValue(), druidExpression.getSimpleExtraction().getExtractionFn() ); final ExtractionFn extractionFn = lhsExpression.getSimpleExtraction().getExtractionFn();
public boolean isDirectColumnAccess() { return simpleExtraction != null && simpleExtraction.getExtractionFn() == null; }
/** * Return the "natural" {@link StringComparator} for an extraction from this row signature. This will be a * lexicographic comparator for String types and a numeric comparator for Number types. * * @param simpleExtraction extraction from this kind of row * * @return natural comparator */ @Nonnull public StringComparator naturalStringComparator(final SimpleExtraction simpleExtraction) { Preconditions.checkNotNull(simpleExtraction, "simpleExtraction"); if (simpleExtraction.getExtractionFn() != null || getColumnType(simpleExtraction.getColumn()) == ValueType.STRING) { return StringComparators.LEXICOGRAPHIC; } else { return StringComparators.NUMERIC; } }
druidExpression.getSimpleExtraction().getColumn(), NullHandling.defaultStringValue(), druidExpression.getSimpleExtraction().getExtractionFn() ); final ExtractionFn extractionFn = lhsExpression.getSimpleExtraction().getExtractionFn(); RexLiteral.stringValue(operands.get(1)), operands.size() > 2 ? RexLiteral.stringValue(operands.get(2)) : null, druidExpression.getSimpleExtraction().getExtractionFn() ); } else {