private static ExpressionDimFilter EDF(final String expression) { return new ExpressionDimFilter(expression, TestExprMacroTable.INSTANCE); } }
@Test public void testGetRequiredColumn() { Assert.assertEquals(EDF("like(dim1, '1%')").getRequiredColumns(), Sets.newHashSet("dim1")); Assert.assertEquals(EDF("dim2 == '1'").getRequiredColumns(), Sets.newHashSet("dim2")); Assert.assertEquals(EDF("dim3 < '2'").getRequiredColumns(), Sets.newHashSet("dim3")); Assert.assertEquals(EDF("dim4 == ''").getRequiredColumns(), Sets.newHashSet("dim4")); Assert.assertEquals(EDF("1 + 1").getRequiredColumns(), new HashSet<>()); Assert.assertEquals(EDF("dim0 == dim3").getRequiredColumns(), Sets.newHashSet("dim0", "dim3")); Assert.assertEquals(EDF("missing == ''").getRequiredColumns(), Sets.newHashSet("missing")); }
/** * Translates to an "expression" type leaf filter. Used as a fallback if we can't use a simple leaf filter. */ @Nullable private static DimFilter toExpressionLeafFilter( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { final DruidExpression druidExpression = toDruidExpression(plannerContext, rowSignature, rexNode); return druidExpression == null ? null : new ExpressionDimFilter(druidExpression.getExpression(), plannerContext.getExprMacroTable()); }
public static ExpressionDimFilter EXPRESSION_FILTER(final String expression) { return new ExpressionDimFilter(expression, CalciteTests.createExprMacroTable()); }
return new ExpressionDimFilter(expression.getExpression(), plannerContext.getExprMacroTable());
/** * Translates to an "expression" type leaf filter. Used as a fallback if we can't use a simple leaf filter. */ @Nullable private static DimFilter toExpressionLeafFilter( final PlannerContext plannerContext, final RowSignature rowSignature, final RexNode rexNode ) { final DruidExpression druidExpression = toDruidExpression(plannerContext, rowSignature, rexNode); return druidExpression == null ? null : new ExpressionDimFilter(druidExpression.getExpression(), plannerContext.getExprMacroTable()); }