diff options
author | Vitalii Diravka <vitalii.diravka@gmail.com> | 2016-12-14 16:24:08 +0000 |
---|---|---|
committer | Jinfeng Ni <jni@apache.org> | 2017-01-23 17:08:20 -0800 |
commit | 08ca5e0923436ebeb3e190c60892167d9beab0c2 (patch) | |
tree | 88d58dca8a9f7efcb8092b94ede61942daef2975 /exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders | |
parent | bb29f19ff8807fd07cdaa9e7110c1a003b3da15b (diff) |
DRILL-5097: Using store.parquet.reader.int96_as_timestamp gives IOOB whereas convert_from works
close apache/drill#697
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders')
-rw-r--r-- | exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java index e20504f3d..b233a6537 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java @@ -110,9 +110,14 @@ public class NullableFixedByteAlignedReaders { /** * Class for reading parquet fixed binary type INT96, which is used for storing hive, - * impala timestamp values with nanoseconds precision. So it reads such values as a drill timestamp. + * impala timestamp values with nanoseconds precision (12 bytes). So it reads such values as a drill timestamp (8 bytes). */ static class NullableFixedBinaryAsTimeStampReader extends NullableFixedByteAlignedReader<NullableTimeStampVector> { + /** + * The width of each element of the TimeStampVector is 8 byte(s). + */ + private static final int TIMESTAMP_LENGTH_IN_BITS = 64; + NullableFixedBinaryAsTimeStampReader(ParquetRecordReader parentReader, int allocateSize, ColumnDescriptor descriptor, ColumnChunkMetaData columnChunkMetaData, boolean fixedLength, NullableTimeStampVector v, SchemaElement schemaElement) throws ExecutionSetupException { super(parentReader, allocateSize, descriptor, columnChunkMetaData, fixedLength, v, schemaElement); @@ -132,6 +137,9 @@ public class NullableFixedByteAlignedReaders { valueVec.getMutator().setSafe(valuesReadInCurrentPass + i, getDateTimeValueFromBinary(binaryTimeStampValue)); } } + // The nanos precision is cut to millis. Therefore the length of single timestamp value is 8 bytes(s) + // instead of 12 byte(s). + dataTypeLengthInBits = TIMESTAMP_LENGTH_IN_BITS; } } |