Skip to content

Commit dfd0478

Browse files
Yash DattaYash Datta
authored andcommitted
PARQUET-116: Add a test case for passing a filter object to user defined predicate
1 parent 4ab46ec commit dfd0478

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

parquet-hadoop/src/test/java/parquet/filter2/recordlevel/TestRecordLevelFilters.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.Arrays;
77
import java.util.Iterator;
88
import java.util.List;
9+
import java.util.Set;
10+
import java.util.HashSet;
911

1012
import org.junit.BeforeClass;
1113
import org.junit.Test;
@@ -15,6 +17,7 @@
1517
import parquet.filter2.predicate.FilterPredicate;
1618
import parquet.filter2.predicate.Operators.BinaryColumn;
1719
import parquet.filter2.predicate.Operators.DoubleColumn;
20+
import parquet.filter2.predicate.Operators.LongColumn;
1821
import parquet.filter2.predicate.Statistics;
1922
import parquet.filter2.predicate.UserDefinedPredicate;
2023
import parquet.filter2.recordlevel.PhoneBookWriter.Location;
@@ -26,6 +29,7 @@
2629
import static parquet.filter2.predicate.FilterApi.and;
2730
import static parquet.filter2.predicate.FilterApi.binaryColumn;
2831
import static parquet.filter2.predicate.FilterApi.doubleColumn;
32+
import static parquet.filter2.predicate.FilterApi.longColumn;
2933
import static parquet.filter2.predicate.FilterApi.eq;
3034
import static parquet.filter2.predicate.FilterApi.gt;
3135
import static parquet.filter2.predicate.FilterApi.not;
@@ -160,6 +164,29 @@ public boolean inverseCanDrop(Statistics<Binary> statistics) {
160164
return false;
161165
}
162166
}
167+
168+
public static class SetInFilter extends UserDefinedPredicate<Long> {
169+
170+
@Override
171+
public boolean keep(Long value, Object o) {
172+
if (value == null) {
173+
return false;
174+
}
175+
176+
Set<Long> hSet = (HashSet<Long>) o;
177+
return hSet.contains(value);
178+
}
179+
180+
@Override
181+
public boolean canDrop(Statistics<Long> statistics) {
182+
return false;
183+
}
184+
185+
@Override
186+
public boolean inverseCanDrop(Statistics<Long> statistics) {
187+
return false;
188+
}
189+
}
163190

164191
@Test
165192
public void testNameNotStartWithP() throws Exception {
@@ -176,6 +203,28 @@ public boolean keep(User u) {
176203
}
177204
});
178205
}
206+
207+
@Test
208+
public void testIdIn() throws Exception {
209+
LongColumn name = longColumn("id");
210+
211+
Set<Long> h = new HashSet<Long>() {{
212+
add(20L); add(27L); add(28L);
213+
}};
214+
FilterPredicate pred = userDefined(name, SetInFilter.class, h);
215+
216+
List<Group> found = PhoneBookWriter.readFile(phonebookFile, FilterCompat.get(pred));
217+
218+
assertFilter(found, new UserFilter() {
219+
@Override
220+
public boolean keep(User u) {
221+
Set<Long> h = new HashSet<Long>() {{
222+
add(20L); add(27L); add(28L);
223+
}};
224+
return h.contains(u.getId());
225+
}
226+
});
227+
}
179228

180229
@Test
181230
public void testComplex() throws Exception {

0 commit comments

Comments
 (0)