aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders
diff options
context:
space:
mode:
authorVitalii Diravka <vitalii.diravka@gmail.com>2016-12-14 16:24:08 +0000
committerJinfeng Ni <jni@apache.org>2017-01-23 17:08:20 -0800
commit08ca5e0923436ebeb3e190c60892167d9beab0c2 (patch)
tree88d58dca8a9f7efcb8092b94ede61942daef2975 /exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders
parentbb29f19ff8807fd07cdaa9e7110c1a003b3da15b (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.java10
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;
}
}