private void checkDateRange(Fixture f, RexNode e, Matcher<String> intervalMatcher) { e = DateRangeRules.replaceTimeUnits(f.rexBuilder, e, "UTC"); final RexNode e2 = f.simplify.simplify(e); List<Interval> intervals = DruidDateTimeUtils.createInterval(e2); if (intervals == null) { throw new AssertionError("null interval"); } assertThat(intervals.toString(), intervalMatcher); }
private void checkDateRangeNoSimplify(Fixture f, RexNode e, Matcher<String> intervalMatcher) { e = DateRangeRules.replaceTimeUnits(f.rexBuilder, e, "UTC"); final List<Interval> intervals = DruidDateTimeUtils.createInterval(e); assertThat(intervals, notNullValue()); assertThat(intervals.toString(), intervalMatcher); }
private void checkDateRange(Fixture f, RexNode e, String timeZone, Matcher<String> matcher, Matcher<String> simplifyMatcher) { e = DateRangeRules.replaceTimeUnits(f.rexBuilder, e, timeZone); assertThat(e.toString(), matcher); final RexNode e2 = f.simplify.simplify(e); assertThat(e2.toString(), simplifyMatcher); }
private void checkDateRange(Fixture f, RexNode e, String timeZone, Matcher<String> matcher, Matcher<String> simplifyMatcher) { e = DateRangeRules.replaceTimeUnits(f.rexBuilder, e, timeZone); assertThat(e.toString(), matcher); final RexNode e2 = f.simplify.simplify(e); assertThat(e2.toString(), simplifyMatcher); }
@Override public void onMatch(RelOptRuleCall call) { final Filter filter = call.rel(0); final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final String timeZone = filter.getCluster().getPlanner().getContext() .unwrap(CalciteConnectionConfig.class).timeZone(); final RexNode condition = replaceTimeUnits(rexBuilder, filter.getCondition(), timeZone); if (condition.equals(filter.getCondition())) { return; } final RelBuilder relBuilder = relBuilderFactory.create(filter.getCluster(), null); relBuilder.push(filter.getInput()) .filter(condition); call.transformTo(relBuilder.build()); } }
@Override public void onMatch(RelOptRuleCall call) { final Filter filter = call.rel(0); final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final String timeZone = filter.getCluster().getPlanner().getContext() .unwrap(CalciteConnectionConfig.class).timeZone(); final RexNode condition = replaceTimeUnits(rexBuilder, filter.getCondition(), timeZone); if (RexUtil.eq(condition, filter.getCondition())) { return; } final RelBuilder relBuilder = relBuilderFactory.create(filter.getCluster(), null); relBuilder.push(filter.getInput()) .filter(condition); call.transformTo(relBuilder.build()); } }