use of org.apache.parquet.internal.column.columnindex.ColumnIndex in project presto by prestodb.
the class TestColumnIndexBuilder method testStaticBuildFloat.
@Test
public void testStaticBuildFloat() {
ColumnIndex columnIndex = ColumnIndexBuilder.build(Types.required(FLOAT).named("test_float"), BoundaryOrder.ASCENDING, asList(true, true, true, false, false, false), asList(9L, 8L, 7L, 6L, 0L, 0L), toBBList(null, null, null, -3.0f, -2.0f, 0.1f), toBBList(null, null, null, -2.0f, 0.0f, 6.0f));
assertEquals(BoundaryOrder.ASCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 9, 8, 7, 6, 0, 0);
assertCorrectNullPages(columnIndex, true, true, true, false, false, false);
assertCorrectValues(columnIndex.getMaxValues(), null, null, null, -2.0f, 0.0f, 6.0f);
assertCorrectValues(columnIndex.getMinValues(), null, null, null, -3.0f, -2.0f, 0.1f);
}
use of org.apache.parquet.internal.column.columnindex.ColumnIndex in project presto by prestodb.
the class TestColumnIndexBuilder method testStaticBuildInt64.
@Test
public void testStaticBuildInt64() {
ColumnIndex columnIndex = ColumnIndexBuilder.build(Types.required(INT64).named("test_int64"), BoundaryOrder.UNORDERED, asList(true, false, true, false, true, false), asList(1L, 2L, 3L, 4L, 5L, 6L), toBBList(null, 2L, null, 4L, null, 9L), toBBList(null, 3L, null, 15L, null, 10L));
assertEquals(BoundaryOrder.UNORDERED, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 1, 2, 3, 4, 5, 6);
assertCorrectNullPages(columnIndex, true, false, true, false, true, false);
assertCorrectValues(columnIndex.getMaxValues(), null, 3L, null, 15L, null, 10L);
assertCorrectValues(columnIndex.getMinValues(), null, 2L, null, 4L, null, 9L);
}
use of org.apache.parquet.internal.column.columnindex.ColumnIndex in project presto by prestodb.
the class TestColumnIndexBuilder method testStaticBuildBoolean.
@Test
public void testStaticBuildBoolean() {
ColumnIndex columnIndex = ColumnIndexBuilder.build(Types.required(BOOLEAN).named("test_boolean"), BoundaryOrder.DESCENDING, asList(false, true, false, true, false, true), asList(9L, 8L, 7L, 6L, 5L, 0L), toBBList(false, null, false, null, true, null), toBBList(true, null, false, null, true, null));
assertEquals(BoundaryOrder.DESCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 9, 8, 7, 6, 5, 0);
assertCorrectNullPages(columnIndex, false, true, false, true, false, true);
assertCorrectValues(columnIndex.getMaxValues(), true, null, false, null, true, null);
assertCorrectValues(columnIndex.getMinValues(), false, null, false, null, true, null);
}
use of org.apache.parquet.internal.column.columnindex.ColumnIndex in project presto by prestodb.
the class TestColumnIndexBuilder method testBuildBinaryUtf8.
@Test
public void testBuildBinaryUtf8() {
PrimitiveType type = Types.required(BINARY).as(UTF8).named("test_binary_utf8");
ColumnIndexBuilder builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
// assertThat(builder, instanceOf(BinaryColumnIndexBuilder.class));
assertNull(builder.build());
Operators.BinaryColumn col = binaryColumn("test_col");
StatsBuilder sb = new StatsBuilder();
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, stringBinary("Jeltz"), stringBinary("Slartibartfast"), null, null));
builder.add(sb.stats(type, null, null, null, null, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, stringBinary("Beeblebrox"), stringBinary("Prefect")));
builder.add(sb.stats(type, stringBinary("Dent"), stringBinary("Trilian"), null));
builder.add(sb.stats(type, stringBinary("Beeblebrox")));
builder.add(sb.stats(type, null, null));
assertEquals(8, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
ColumnIndex columnIndex = builder.build();
assertEquals(BoundaryOrder.UNORDERED, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 2, 2, 5, 2, 0, 1, 0, 2);
assertCorrectNullPages(columnIndex, true, false, true, true, false, false, false, true);
assertCorrectValues(columnIndex.getMaxValues(), null, stringBinary("Slartibartfast"), null, null, stringBinary("Prefect"), stringBinary("Trilian"), stringBinary("Beeblebrox"), null);
assertCorrectValues(columnIndex.getMinValues(), null, stringBinary("Jeltz"), null, null, stringBinary("Beeblebrox"), stringBinary("Dent"), stringBinary("Beeblebrox"), null);
assertCorrectFiltering(columnIndex, eq(col, stringBinary("Marvin")), 1, 4, 5);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 1, 2, 3, 5, 7);
assertCorrectFiltering(columnIndex, notEq(col, stringBinary("Beeblebrox")), 0, 1, 2, 3, 4, 5, 7);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 4, 5, 6);
assertCorrectFiltering(columnIndex, gt(col, stringBinary("Prefect")), 1, 5);
assertCorrectFiltering(columnIndex, gtEq(col, stringBinary("Prefect")), 1, 4, 5);
assertCorrectFiltering(columnIndex, lt(col, stringBinary("Dent")), 4, 6);
assertCorrectFiltering(columnIndex, ltEq(col, stringBinary("Dent")), 4, 5, 6);
assertCorrectFiltering(columnIndex, userDefined(col, BinaryUtf8StartsWithB.class), 4, 6);
assertCorrectFiltering(columnIndex, invert(userDefined(col, BinaryUtf8StartsWithB.class)), 0, 1, 2, 3, 4, 5, 7);
builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
sb = new StatsBuilder();
builder.add(sb.stats(type, stringBinary("Beeblebrox"), stringBinary("Dent"), null, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null, null, null, null));
builder.add(sb.stats(type, stringBinary("Dent"), stringBinary("Jeltz")));
builder.add(sb.stats(type, stringBinary("Dent"), stringBinary("Prefect"), null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, stringBinary("Slartibartfast")));
builder.add(sb.stats(type, null, null));
assertEquals(8, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
columnIndex = builder.build();
assertEquals(BoundaryOrder.ASCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 2, 2, 5, 0, 1, 2, 0, 2);
assertCorrectNullPages(columnIndex, false, true, true, false, false, true, false, true);
assertCorrectValues(columnIndex.getMaxValues(), stringBinary("Dent"), null, null, stringBinary("Jeltz"), stringBinary("Prefect"), null, stringBinary("Slartibartfast"), null);
assertCorrectValues(columnIndex.getMinValues(), stringBinary("Beeblebrox"), null, null, stringBinary("Dent"), stringBinary("Dent"), null, stringBinary("Slartibartfast"), null);
assertCorrectFiltering(columnIndex, eq(col, stringBinary("Jeltz")), 3, 4);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 1, 2, 4, 5, 7);
assertCorrectFiltering(columnIndex, notEq(col, stringBinary("Slartibartfast")), 0, 1, 2, 3, 4, 5, 7);
assertCorrectFiltering(columnIndex, notEq(col, null), 0, 3, 4, 6);
assertCorrectFiltering(columnIndex, gt(col, stringBinary("Marvin")), 4, 6);
assertCorrectFiltering(columnIndex, gtEq(col, stringBinary("Marvin")), 4, 6);
assertCorrectFiltering(columnIndex, lt(col, stringBinary("Dent")), 0);
assertCorrectFiltering(columnIndex, ltEq(col, stringBinary("Dent")), 0, 3, 4);
assertCorrectFiltering(columnIndex, userDefined(col, BinaryUtf8StartsWithB.class), 0);
assertCorrectFiltering(columnIndex, invert(userDefined(col, BinaryUtf8StartsWithB.class)), 0, 1, 2, 3, 4, 5, 6, 7);
builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
sb = new StatsBuilder();
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, stringBinary("Slartibartfast")));
builder.add(sb.stats(type, null, null, null, null, null));
builder.add(sb.stats(type, stringBinary("Prefect"), stringBinary("Jeltz"), null));
builder.add(sb.stats(type, stringBinary("Dent"), stringBinary("Dent")));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, stringBinary("Dent"), stringBinary("Beeblebrox"), null, null));
assertEquals(8, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
columnIndex = builder.build();
assertEquals(BoundaryOrder.DESCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 2, 0, 5, 1, 0, 2, 2, 2);
assertCorrectNullPages(columnIndex, true, false, true, false, false, true, true, false);
assertCorrectValues(columnIndex.getMaxValues(), null, stringBinary("Slartibartfast"), null, stringBinary("Prefect"), stringBinary("Dent"), null, null, stringBinary("Dent"));
assertCorrectValues(columnIndex.getMinValues(), null, stringBinary("Slartibartfast"), null, stringBinary("Jeltz"), stringBinary("Dent"), null, null, stringBinary("Beeblebrox"));
assertCorrectFiltering(columnIndex, eq(col, stringBinary("Marvin")), 3);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 2, 3, 5, 6, 7);
assertCorrectFiltering(columnIndex, notEq(col, stringBinary("Dent")), 0, 1, 2, 3, 5, 6, 7);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 3, 4, 7);
assertCorrectFiltering(columnIndex, gt(col, stringBinary("Prefect")), 1);
assertCorrectFiltering(columnIndex, gtEq(col, stringBinary("Prefect")), 1, 3);
assertCorrectFiltering(columnIndex, lt(col, stringBinary("Marvin")), 3, 4, 7);
assertCorrectFiltering(columnIndex, ltEq(col, stringBinary("Marvin")), 3, 4, 7);
assertCorrectFiltering(columnIndex, userDefined(col, BinaryUtf8StartsWithB.class), 7);
assertCorrectFiltering(columnIndex, invert(userDefined(col, BinaryUtf8StartsWithB.class)), 0, 1, 2, 3, 4, 5, 6, 7);
}
use of org.apache.parquet.internal.column.columnindex.ColumnIndex in project presto by prestodb.
the class TestColumnIndexBuilder method testBuildInt64.
@Test
public void testBuildInt64() {
PrimitiveType type = Types.required(INT64).named("test_int64");
ColumnIndexBuilder builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
// assertThat(builder, instanceOf(LongColumnIndexBuilder.class));
assertNull(builder.build());
Operators.LongColumn col = longColumn("test_col");
StatsBuilder sb = new StatsBuilder();
builder.add(sb.stats(type, -4L, 10L));
builder.add(sb.stats(type, -11L, 7L, null));
builder.add(sb.stats(type, 2L, 2L, null, null));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, 1L, 2L));
builder.add(sb.stats(type, -21L, 8L));
assertEquals(6, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
ColumnIndex columnIndex = builder.build();
assertEquals(BoundaryOrder.UNORDERED, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 0L, 1L, 2L, 3L, 0L, 0L);
assertCorrectNullPages(columnIndex, false, false, false, true, false, false);
assertCorrectValues(columnIndex.getMaxValues(), 10L, 7L, 2L, null, 2L, 8L);
assertCorrectValues(columnIndex.getMinValues(), -4L, -11L, 2L, null, 1L, -21L);
assertCorrectFiltering(columnIndex, eq(col, 0L), 0, 1, 5);
assertCorrectFiltering(columnIndex, eq(col, null), 1, 2, 3);
assertCorrectFiltering(columnIndex, notEq(col, 0L), 0, 1, 2, 3, 4, 5);
assertCorrectFiltering(columnIndex, notEq(col, null), 0, 1, 2, 4, 5);
assertCorrectFiltering(columnIndex, gt(col, 2L), 0, 1, 5);
assertCorrectFiltering(columnIndex, gtEq(col, 2L), 0, 1, 2, 4, 5);
assertCorrectFiltering(columnIndex, lt(col, -21L));
assertCorrectFiltering(columnIndex, ltEq(col, -21L), 5);
assertCorrectFiltering(columnIndex, userDefined(col, LongIsDivisableWith3.class), 0, 1, 5);
assertCorrectFiltering(columnIndex, invert(userDefined(col, LongIsDivisableWith3.class)), 0, 1, 2, 3, 4, 5);
builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
sb = new StatsBuilder();
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, -532L, -345L, null, null));
builder.add(sb.stats(type, -234L, -42L, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, -42L, 2L));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, -3L, 42L));
builder.add(sb.stats(type, null, null));
assertEquals(9, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
columnIndex = builder.build();
assertEquals(BoundaryOrder.ASCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 2, 2, 1, 2, 3, 0, 2, 0, 2);
assertCorrectNullPages(columnIndex, true, false, false, true, true, false, true, false, true);
assertCorrectValues(columnIndex.getMaxValues(), null, -345L, -42L, null, null, 2L, null, 42L, null);
assertCorrectValues(columnIndex.getMinValues(), null, -532L, -234L, null, null, -42L, null, -3L, null);
assertCorrectFiltering(columnIndex, eq(col, -42L), 2, 5);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 1, 2, 3, 4, 6, 8);
assertCorrectFiltering(columnIndex, notEq(col, -42L), 0, 1, 2, 3, 4, 5, 6, 7, 8);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 2, 5, 7);
assertCorrectFiltering(columnIndex, gt(col, 2L), 7);
assertCorrectFiltering(columnIndex, gtEq(col, 2L), 5, 7);
assertCorrectFiltering(columnIndex, lt(col, -42L), 1, 2);
assertCorrectFiltering(columnIndex, ltEq(col, -42L), 1, 2, 5);
assertCorrectFiltering(columnIndex, userDefined(col, LongIsDivisableWith3.class), 1, 2, 5, 7);
assertCorrectFiltering(columnIndex, invert(userDefined(col, LongIsDivisableWith3.class)), 0, 1, 2, 3, 4, 5, 6, 7, 8);
builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
sb = new StatsBuilder();
builder.add(sb.stats(type, null, null, null, null, null));
builder.add(sb.stats(type, 532L, 345L));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, 234L, 42L, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, 42L, -2L));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, -3L, -42L));
assertEquals(9, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
columnIndex = builder.build();
assertEquals(BoundaryOrder.DESCENDING, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 5, 0, 3, 1, 2, 0, 2, 2, 0);
assertCorrectNullPages(columnIndex, true, false, true, false, true, false, true, true, false);
assertCorrectValues(columnIndex.getMaxValues(), null, 532L, null, 234L, null, 42L, null, null, -3L);
assertCorrectValues(columnIndex.getMinValues(), null, 345L, null, 42L, null, -2L, null, null, -42L);
assertCorrectFiltering(columnIndex, eq(col, 0L), 5);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 2, 3, 4, 6, 7);
assertCorrectFiltering(columnIndex, notEq(col, 0L), 0, 1, 2, 3, 4, 5, 6, 7, 8);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 3, 5, 8);
assertCorrectFiltering(columnIndex, gt(col, 2L), 1, 3, 5);
assertCorrectFiltering(columnIndex, gtEq(col, 2L), 1, 3, 5);
assertCorrectFiltering(columnIndex, lt(col, -42L));
assertCorrectFiltering(columnIndex, ltEq(col, -42L), 8);
assertCorrectFiltering(columnIndex, userDefined(col, LongIsDivisableWith3.class), 1, 3, 5, 8);
assertCorrectFiltering(columnIndex, invert(userDefined(col, LongIsDivisableWith3.class)), 0, 1, 2, 3, 4, 5, 6, 7, 8);
}
Aggregations