use of org.apache.parquet.schema.PrimitiveType in project hive by apache.
the class TestETypeConverter method testGetInt64MicrosTimestampConverter.
@Test
public void testGetInt64MicrosTimestampConverter() throws Exception {
Timestamp timestamp = Timestamp.valueOf("2018-07-15 15:12:20.112233");
PrimitiveType primitiveType = createInt64TimestampType(false, TimeUnit.MICROS);
long time = timestamp.toEpochSecond() * 1000000 + timestamp.getNanos() / 1000;
Writable writable = getWritableFromPrimitiveConverter(null, primitiveType, time);
TimestampWritableV2 timestampWritable = (TimestampWritableV2) writable;
assertEquals(timestamp.toEpochMilli(), timestampWritable.getTimestamp().toEpochMilli());
assertEquals(timestamp.getNanos(), timestampWritable.getNanos());
}
use of org.apache.parquet.schema.PrimitiveType in project hive by apache.
the class TestETypeConverter method testGetTimestampProlepticConverter.
@Test
public void testGetTimestampProlepticConverter() throws Exception {
Timestamp timestamp = Timestamp.valueOf("1572-06-15 15:12:20.0");
NanoTime nanoTime = NanoTimeUtils.getNanoTime(timestamp, ZoneOffset.UTC, false);
PrimitiveType primitiveType = Types.optional(PrimitiveTypeName.INT96).named("value");
Writable writable = getWritableFromBinaryConverter(null, primitiveType, nanoTime.toBinary());
TimestampWritableV2 timestampWritable = (TimestampWritableV2) writable;
assertEquals(timestamp.getNanos(), timestampWritable.getNanos());
}
use of org.apache.parquet.schema.PrimitiveType in project hive by apache.
the class TestETypeConverter method testGetFloatConverterForDouble.
@Test
public void testGetFloatConverterForDouble() throws Exception {
MyConverterParent converterParent = new MyConverterParent();
PrimitiveType primitiveType = Types.optional(PrimitiveTypeName.FLOAT).named("value");
PrimitiveConverter converter = ETypeConverter.getNewConverter(primitiveType, 1, converterParent, createHiveTypeInfo("double"));
((PrimitiveConverter) converter).addFloat(3276f);
Writable writable = converterParent.getValue();
DoubleWritable doubleWritable = (DoubleWritable) writable;
assertEquals(3276d, doubleWritable.get(), 0);
}
use of org.apache.parquet.schema.PrimitiveType in project hive by apache.
the class TestETypeConverter method testGetDecimalConverterFloatHiveType.
@Test
public void testGetDecimalConverterFloatHiveType() throws Exception {
PrimitiveType primitiveType = Types.optional(PrimitiveTypeName.BINARY).as(LogicalTypeAnnotation.decimalType(2, 7)).named("value");
Writable writable = getWritableFromPrimitiveConverter(createHiveTypeInfo("float"), primitiveType, 2200);
FloatWritable floatWritable = (FloatWritable) writable;
assertEquals(22, (int) floatWritable.get());
}
use of org.apache.parquet.schema.PrimitiveType in project presto by prestodb.
the class TestColumnIndexBuilder method testBuildFloat.
@Test
public void testBuildFloat() {
PrimitiveType type = Types.required(FLOAT).named("test_float");
ColumnIndexBuilder builder = ColumnIndexBuilder.getBuilder(type, Integer.MAX_VALUE);
// assertThat(builder, instanceOf(FloatColumnIndexBuilder.class));
assertNull(builder.build());
Operators.FloatColumn col = floatColumn("test_col");
StatsBuilder sb = new StatsBuilder();
builder.add(sb.stats(type, -4.2f, -4.1f));
builder.add(sb.stats(type, -11.7f, 7.0f, null));
builder.add(sb.stats(type, 2.2f, 2.2f, null, null));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, 1.9f, 2.32f));
builder.add(sb.stats(type, -21.0f, 8.1f));
assertEquals(6, builder.getPageCount());
assertEquals(sb.getMinMaxSize(), builder.getMinMaxSize());
ColumnIndex columnIndex = builder.build();
assertEquals(BoundaryOrder.UNORDERED, columnIndex.getBoundaryOrder());
assertCorrectNullCounts(columnIndex, 0, 1, 2, 3, 0, 0);
assertCorrectNullPages(columnIndex, false, false, false, true, false, false);
assertCorrectValues(columnIndex.getMaxValues(), -4.1f, 7.0f, 2.2f, null, 2.32f, 8.1f);
assertCorrectValues(columnIndex.getMinValues(), -4.2f, -11.7f, 2.2f, null, 1.9f, -21.0f);
assertCorrectFiltering(columnIndex, eq(col, 0.0f), 1, 5);
assertCorrectFiltering(columnIndex, eq(col, null), 1, 2, 3);
assertCorrectFiltering(columnIndex, notEq(col, 2.2f), 0, 1, 2, 3, 4, 5);
assertCorrectFiltering(columnIndex, notEq(col, null), 0, 1, 2, 4, 5);
assertCorrectFiltering(columnIndex, gt(col, 2.2f), 1, 4, 5);
assertCorrectFiltering(columnIndex, gtEq(col, 2.2f), 1, 2, 4, 5);
assertCorrectFiltering(columnIndex, lt(col, 0.0f), 0, 1, 5);
assertCorrectFiltering(columnIndex, ltEq(col, 1.9f), 0, 1, 4, 5);
assertCorrectFiltering(columnIndex, userDefined(col, FloatIsInteger.class), 1, 4, 5);
assertCorrectFiltering(columnIndex, invert(userDefined(col, FloatIsInteger.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, -532.3f, -345.2f, null, null));
builder.add(sb.stats(type, -300.6f, -234.7f, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, -234.6f, 2.99999f));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, 3.0f, 42.83f));
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, -345.2f, -234.7f, null, null, 2.99999f, null, 42.83f, null);
assertCorrectValues(columnIndex.getMinValues(), null, -532.3f, -300.6f, null, null, -234.6f, null, 3.0f, null);
assertCorrectFiltering(columnIndex, eq(col, 0.0f), 5);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 1, 2, 3, 4, 6, 8);
assertCorrectFiltering(columnIndex, notEq(col, 2.2f), 0, 1, 2, 3, 4, 5, 6, 7, 8);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 2, 5, 7);
assertCorrectFiltering(columnIndex, gt(col, 2.2f), 5, 7);
assertCorrectFiltering(columnIndex, gtEq(col, -234.7f), 2, 5, 7);
assertCorrectFiltering(columnIndex, lt(col, -234.6f), 1, 2);
assertCorrectFiltering(columnIndex, ltEq(col, -234.6f), 1, 2, 5);
assertCorrectFiltering(columnIndex, userDefined(col, FloatIsInteger.class), 1, 2, 5, 7);
assertCorrectFiltering(columnIndex, invert(userDefined(col, FloatIsInteger.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, 532.3f, 345.2f));
builder.add(sb.stats(type, null, null, null));
builder.add(sb.stats(type, 234.7f, 234.6f, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, 234.6f, -2.99999f));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, null, null));
builder.add(sb.stats(type, -3.0f, -42.83f));
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, 532.3f, null, 234.7f, null, 234.6f, null, null, -3.0f);
assertCorrectValues(columnIndex.getMinValues(), null, 345.2f, null, 234.6f, null, -2.99999f, null, null, -42.83f);
assertCorrectFiltering(columnIndex, eq(col, 234.65f), 3);
assertCorrectFiltering(columnIndex, eq(col, null), 0, 2, 3, 4, 6, 7);
assertCorrectFiltering(columnIndex, notEq(col, 2.2f), 0, 1, 2, 3, 4, 5, 6, 7, 8);
assertCorrectFiltering(columnIndex, notEq(col, null), 1, 3, 5, 8);
assertCorrectFiltering(columnIndex, gt(col, 2.2f), 1, 3, 5);
assertCorrectFiltering(columnIndex, gtEq(col, 2.2f), 1, 3, 5);
assertCorrectFiltering(columnIndex, lt(col, 0.0f), 5, 8);
assertCorrectFiltering(columnIndex, ltEq(col, 0.0f), 5, 8);
assertCorrectFiltering(columnIndex, userDefined(col, FloatIsInteger.class), 1, 5, 8);
assertCorrectFiltering(columnIndex, invert(userDefined(col, FloatIsInteger.class)), 0, 1, 2, 3, 4, 5, 6, 7, 8);
}
Aggregations