This is an automated email from the ASF dual-hosted git repository.

shangxinli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git


The following commit(s) were added to refs/heads/master by this push:
     new 0819356a9 PARQUET-2167: Fix CLI serializing of footer with date fields 
(#980)
0819356a9 is described below

commit 0819356a9dafd2ca07c5eab68e2bffeddc3bd3d9
Author: Bryan Keller <[email protected]>
AuthorDate: Mon Jul 25 19:55:49 2022 -0700

    PARQUET-2167: Fix CLI serializing of footer with date fields (#980)
---
 parquet-cli/pom.xml                                |  5 ++++
 .../parquet/cli/commands/ShowFooterCommand.java    |  2 ++
 .../org/apache/parquet/cli/commands/FileTest.java  |  1 +
 .../parquet/cli/commands/ParquetFileTest.java      | 28 ++++++++++++++--------
 pom.xml                                            |  1 +
 5 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/parquet-cli/pom.xml b/parquet-cli/pom.xml
index 5346f2439..f81979348 100644
--- a/parquet-cli/pom.xml
+++ b/parquet-cli/pom.xml
@@ -105,6 +105,11 @@
       <artifactId>jackson-annotations</artifactId>
       <version>${jackson.version}</version>
     </dependency>
+    <dependency>
+      <groupId>${jackson.datatype.groupId}</groupId>
+      <artifactId>jackson-datatype-jsr310</artifactId>
+      <version>${jackson.version}</version>
+    </dependency>
     <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
diff --git 
a/parquet-cli/src/main/java/org/apache/parquet/cli/commands/ShowFooterCommand.java
 
b/parquet-cli/src/main/java/org/apache/parquet/cli/commands/ShowFooterCommand.java
index a5a5c1fc0..b96ee2aaf 100644
--- 
a/parquet-cli/src/main/java/org/apache/parquet/cli/commands/ShowFooterCommand.java
+++ 
b/parquet-cli/src/main/java/org/apache/parquet/cli/commands/ShowFooterCommand.java
@@ -23,6 +23,7 @@ import static 
org.apache.parquet.bytes.BytesUtils.readIntLittleEndian;
 import static org.apache.parquet.hadoop.ParquetFileWriter.EFMAGIC;
 import static org.apache.parquet.hadoop.ParquetFileWriter.MAGIC;
 
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
@@ -86,6 +87,7 @@ public class ShowFooterCommand extends BaseCommand {
     ObjectMapper mapper = new ObjectMapper();
     mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
     mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
+    mapper.registerModule(new JavaTimeModule());
     return mapper;
   }
 
diff --git 
a/parquet-cli/src/test/java/org/apache/parquet/cli/commands/FileTest.java 
b/parquet-cli/src/test/java/org/apache/parquet/cli/commands/FileTest.java
index e145e7ccc..0253a19a0 100644
--- a/parquet-cli/src/test/java/org/apache/parquet/cli/commands/FileTest.java
+++ b/parquet-cli/src/test/java/org/apache/parquet/cli/commands/FileTest.java
@@ -35,6 +35,7 @@ public abstract class FileTest {
   static final String DOUBLE_FIELD = "double_field";
   static final String BINARY_FIELD = "binary_field";
   static final String FIXED_LEN_BYTE_ARRAY_FIELD = "flba_field";
+  static final String DATE_FIELD = "date_field";
 
   static final String[] COLORS = {"RED", "BLUE", "YELLOW", "GREEN", "WHITE"};
 
diff --git 
a/parquet-cli/src/test/java/org/apache/parquet/cli/commands/ParquetFileTest.java
 
b/parquet-cli/src/test/java/org/apache/parquet/cli/commands/ParquetFileTest.java
index 37f27b8ea..cbcdb7e9e 100644
--- 
a/parquet-cli/src/test/java/org/apache/parquet/cli/commands/ParquetFileTest.java
+++ 
b/parquet-cli/src/test/java/org/apache/parquet/cli/commands/ParquetFileTest.java
@@ -23,12 +23,17 @@ import org.apache.hadoop.fs.Path;
 import org.apache.parquet.column.ParquetProperties;
 import org.apache.parquet.example.data.Group;
 import org.apache.parquet.example.data.simple.SimpleGroupFactory;
+import org.apache.parquet.format.DateType;
+import org.apache.parquet.format.LogicalType;
+import org.apache.parquet.format.LogicalTypes;
 import org.apache.parquet.hadoop.ParquetWriter;
 import org.apache.parquet.hadoop.example.GroupWriteSupport;
 import org.apache.parquet.hadoop.metadata.CompressionCodecName;
 import org.apache.parquet.io.api.Binary;
+import org.apache.parquet.schema.LogicalTypeAnnotation;
 import org.apache.parquet.schema.MessageType;
 import org.apache.parquet.schema.PrimitiveType;
+import org.apache.parquet.schema.Types;
 import org.junit.Before;
 
 import java.io.File;
@@ -59,15 +64,17 @@ public abstract class ParquetFileTest extends FileTest {
   }
 
   private static MessageType createSchema() {
-    return new MessageType("schema",
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.INT32, INT32_FIELD),
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.INT64, INT64_FIELD),
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.FLOAT, FLOAT_FIELD),
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.DOUBLE, DOUBLE_FIELD),
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.BINARY, BINARY_FIELD),
-      new PrimitiveType(REQUIRED, PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY,
-        12, FIXED_LEN_BYTE_ARRAY_FIELD)
-    );
+    return Types.buildMessage()
+      .required(PrimitiveTypeName.INT32).named(INT32_FIELD)
+      .required(PrimitiveTypeName.INT64).named(INT64_FIELD)
+      .required(PrimitiveTypeName.FLOAT).named(FLOAT_FIELD)
+      .required(PrimitiveTypeName.DOUBLE).named(DOUBLE_FIELD)
+      .required(PrimitiveTypeName.BINARY).named(BINARY_FIELD)
+      .required(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(12)
+        .named(FIXED_LEN_BYTE_ARRAY_FIELD)
+      .required(PrimitiveTypeName.INT32).as(LogicalTypeAnnotation.dateType())
+        .named(DATE_FIELD)
+      .named("schema");
   }
 
   private void createTestParquetFile() throws IOException {
@@ -102,7 +109,8 @@ public abstract class ParquetFileTest extends FileTest {
          .append(DOUBLE_FIELD, 2.0d + i)
          .append(BINARY_FIELD, Binary.fromString(COLORS[i % COLORS.length]))
          .append(FIXED_LEN_BYTE_ARRAY_FIELD,
-           Binary.fromConstantByteArray(bytes)));
+           Binary.fromConstantByteArray(bytes))
+         .append(DATE_FIELD, i));
       }
     }
   }
diff --git a/pom.xml b/pom.xml
index 1632831fa..2f664bf90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,7 @@
     <maven.compiler.target>1.8</maven.compiler.target>
     <github.global.server>github</github.global.server>
     <jackson.groupId>com.fasterxml.jackson.core</jackson.groupId>
+    
<jackson.datatype.groupId>com.fasterxml.jackson.datatype</jackson.datatype.groupId>
     <jackson.package>com.fasterxml.jackson</jackson.package>
     <jackson.version>2.13.2</jackson.version>
     <jackson-databind.version>2.13.2.2</jackson-databind.version>

Reply via email to