diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/OriginalType.java b/parquet-column/src/main/java/org/apache/parquet/schema/OriginalType.java index 0ea89ba8ba..77acc5452b 100644 --- a/parquet-column/src/main/java/org/apache/parquet/schema/OriginalType.java +++ b/parquet-column/src/main/java/org/apache/parquet/schema/OriginalType.java @@ -27,7 +27,9 @@ public enum OriginalType { DECIMAL, DATE, TIME_MILLIS, + TIME_MICROS, TIMESTAMP_MILLIS, + TIMESTAMP_MICROS, UINT_8, UINT_16, UINT_32, diff --git a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java index 947a84565d..4e7e8815c2 100644 --- a/parquet-column/src/main/java/org/apache/parquet/schema/Types.java +++ b/parquet-column/src/main/java/org/apache/parquet/schema/Types.java @@ -424,7 +424,9 @@ protected PrimitiveType build(String name) { Preconditions.checkState(primitiveType == PrimitiveTypeName.INT32, originalType.toString() + " can only annotate INT32"); break; + case TIME_MICROS: case TIMESTAMP_MILLIS: + case TIMESTAMP_MICROS: case UINT_64: case INT_64: Preconditions.checkState(primitiveType == PrimitiveTypeName.INT64, diff --git a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java index 5fac7bc892..0c39ef2ba1 100644 --- a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java +++ b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java @@ -509,7 +509,7 @@ public Type call() throws Exception { @Test public void testInt64Annotations() { OriginalType[] types = new OriginalType[] { - TIMESTAMP_MILLIS, UINT_64, INT_64}; + TIME_MICROS, TIMESTAMP_MILLIS, TIMESTAMP_MICROS, UINT_64, INT_64}; for (OriginalType logicalType : types) { PrimitiveType expected = new PrimitiveType(REQUIRED, INT64, "col", logicalType); PrimitiveType date = Types.required(INT64).as(logicalType).named("col"); @@ -520,7 +520,7 @@ public void testInt64Annotations() { @Test public void testInt64AnnotationsRejectNonInt64() { OriginalType[] types = new OriginalType[] { - TIMESTAMP_MILLIS, UINT_64, INT_64}; + TIME_MICROS, TIMESTAMP_MILLIS, TIMESTAMP_MICROS, UINT_64, INT_64}; for (final OriginalType logicalType : types) { PrimitiveTypeName[] nonInt64 = new PrimitiveTypeName[]{ BOOLEAN, INT32, INT96, DOUBLE, FLOAT, BINARY diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java index 6821bbfff4..b373bfb1fd 100644 --- a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java +++ b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java @@ -36,7 +36,6 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import org.apache.hadoop.fs.FSDataInputStream; import org.apache.parquet.CorruptStatistics; import org.apache.parquet.Log; import org.apache.parquet.hadoop.metadata.ColumnPath; @@ -336,8 +335,12 @@ OriginalType getOriginalType(ConvertedType type) { return OriginalType.DATE; case TIME_MILLIS: return OriginalType.TIME_MILLIS; + case TIME_MICROS: + return OriginalType.TIME_MICROS; case TIMESTAMP_MILLIS: return OriginalType.TIMESTAMP_MILLIS; + case TIMESTAMP_MICROS: + return OriginalType.TIMESTAMP_MICROS; case INTERVAL: return OriginalType.INTERVAL; case INT_8: @@ -384,8 +387,12 @@ ConvertedType getConvertedType(OriginalType type) { return ConvertedType.DATE; case TIME_MILLIS: return ConvertedType.TIME_MILLIS; + case TIME_MICROS: + return ConvertedType.TIME_MICROS; case TIMESTAMP_MILLIS: return ConvertedType.TIMESTAMP_MILLIS; + case TIMESTAMP_MICROS: + return ConvertedType.TIMESTAMP_MICROS; case INTERVAL: return ConvertedType.INTERVAL; case INT_8: diff --git a/pom.xml b/pom.xml index 3588de567d..94d7a02589 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ shaded.parquet 1.1.0 2.5.3 - 2.3.0-incubating + 2.3.1 1.7.0 thrift 2.10.4