@Override public Expression alwaysTrue() { return functions$.MODULE$.lit(true).expr(); }
@Override public Expression alwaysFalse() { return functions$.MODULE$.lit(false).expr(); }
@Override public <T> Expression isNull(BoundReference<T> ref) { return column(ref).isNull().expr(); }
@Override public <T> Expression notNull(BoundReference<T> ref) { return column(ref).isNotNull().expr(); }
@Override public <T> Expression gt(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).gt(lit.value()).expr(); }
@Override public <T> Expression ltEq(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).leq(lit.value()).expr(); }
@Override public <T> Expression eq(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).equalTo(lit.value()).expr(); }
@Override public <T> Expression lt(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).lt(lit.value()).expr(); }
@Override public <T> Expression gtEq(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).geq(lit.value()).expr(); }
@Override public <T> Expression notEq(BoundReference<T> ref, com.netflix.iceberg.expressions.Literal<T> lit) { return column(ref).notEqual(lit.value()).expr(); }
@Test public void testTrunctateDataPartitionedFilters() { File location = buildPartitionedTable("trunc", PARTITION_BY_FIRST_LETTER, "trunc1", "data"); DataSourceOptions options = new DataSourceOptions(ImmutableMap.of( "path", location.toString()) ); IcebergSource source = new IcebergSource(); DataSourceReader unfiltered = source.createReader(options); Assert.assertEquals("Unfiltered table should have created 9 read tasks", 9, planTasks(unfiltered).size()); { DataSourceReader reader = source.createReader(options); pushFilters(reader, Expressions.equal("data", "goldfish")); List<DataReaderFactory<UnsafeRow>> tasks = planTasks(reader); Assert.assertEquals("Should create 1 task for 'goldfish' (g)", 1, tasks.size()); } { DataSourceReader reader = source.createReader(options); pushFilters(reader, col("data").$eq$eq$eq("goldfish").expr()); List<DataReaderFactory<UnsafeRow>> tasks = planTasks(reader); Assert.assertEquals("Should create 1 task for 'goldfish' (g)", 1, tasks.size()); } assertEqualsSafe(SCHEMA.asStruct(), expected(9), read(location.toString(), "data = 'goldfish'")); }