public static DruidExpression fromColumn(final String column) { return new DruidExpression(SimpleExtraction.of(column, null), StringUtils.format("\"%s\"", escape(column))); }
selector, sourceRowSignature.naturalStringComparator( SimpleExtraction.of(selector.getDimension(), selector.getExtractionFn())
@Override public DimFilter process(DimFilter filter) { if (filter instanceof BoundDimFilter) { final BoundDimFilter bound = (BoundDimFilter) filter; final StringComparator naturalStringComparator = sourceRowSignature.naturalStringComparator( SimpleExtraction.of(bound.getDimension(), bound.getExtractionFn()) ); if (bound.hasUpperBound() && bound.hasLowerBound() && bound.getUpper().equals(bound.getLower()) && !bound.isUpperStrict() && !bound.isLowerStrict() && bound.getOrdering().equals(naturalStringComparator)) { return new SelectorDimFilter( bound.getDimension(), bound.getUpper(), bound.getExtractionFn() ); } else { return filter; } } else { return filter; } } }
@Test public void testCastAsTimestamp() { testExpression( rexBuilder.makeAbstractCast( typeFactory.createSqlType(SqlTypeName.TIMESTAMP), inputRef("t") ), DruidExpression.of( SimpleExtraction.of("t", null), "\"t\"" ), DateTimes.of("2000-02-03T04:05:06Z").getMillis() ); testExpression( rexBuilder.makeAbstractCast( typeFactory.createSqlType(SqlTypeName.TIMESTAMP), inputRef("tstr") ), DruidExpression.of( null, "timestamp_parse(\"tstr\",null,'UTC')" ), DateTimes.of("2000-02-03T04:05:06Z").getMillis() ); }
@Test public void testRegexpExtract() { testExpression( rexBuilder.makeCall( new RegexpExtractOperatorConversion().calciteOperator(), inputRef("s"), rexBuilder.makeLiteral("f(.)"), integerLiteral(1) ), DruidExpression.of( SimpleExtraction.of("s", new RegexDimExtractionFn("f(.)", 1, true, null)), "regexp_extract(\"s\",'f(.)',1)" ), "o" ); testExpression( rexBuilder.makeCall( new RegexpExtractOperatorConversion().calciteOperator(), inputRef("s"), rexBuilder.makeLiteral("f(.)") ), DruidExpression.of( SimpleExtraction.of("s", new RegexDimExtractionFn("f(.)", 0, true, null)), "regexp_extract(\"s\",'f(.)')" ), "fo" ); }
SimpleExtraction.of("t", null), "\"t\"" ),
public static DruidExpression fromColumn(final String column) { return new DruidExpression(SimpleExtraction.of(column, null), StringUtils.format("\"%s\"", escape(column))); }
selector, sourceRowSignature.naturalStringComparator( SimpleExtraction.of(selector.getDimension(), selector.getExtractionFn())
@Override public DimFilter process(DimFilter filter) { if (filter instanceof BoundDimFilter) { final BoundDimFilter bound = (BoundDimFilter) filter; final StringComparator naturalStringComparator = sourceRowSignature.naturalStringComparator( SimpleExtraction.of(bound.getDimension(), bound.getExtractionFn()) ); if (bound.hasUpperBound() && bound.hasLowerBound() && bound.getUpper().equals(bound.getLower()) && !bound.isUpperStrict() && !bound.isLowerStrict() && bound.getOrdering().equals(naturalStringComparator)) { return new SelectorDimFilter( bound.getDimension(), bound.getUpper(), bound.getExtractionFn() ); } else { return filter; } } else { return filter; } } }