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