You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by nk...@apache.org on 2019/12/12 16:42:41 UTC

[parquet-mr] branch master updated: [PARQUET-1717] Convert i16 thrift to INT16 logical type instead (#706)

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

nkollar 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 4ca29c7  [PARQUET-1717] Convert i16 thrift to INT16 logical type instead (#706)
4ca29c7 is described below

commit 4ca29c7114237d4bb039b7291fa2c8c182170109
Author: Emmanuel <em...@getyourguide.com>
AuthorDate: Thu Dec 12 17:42:31 2019 +0100

    [PARQUET-1717] Convert i16 thrift to INT16 logical type instead (#706)
    
    * [PARQUET-1717] Convert i16 thrift to INT16 logical type instead of INT32 primitive
    
    * [Parquet-1717] Add unit test
    Add unit test for i16 thrift type
---
 .../apache/parquet/thrift/ThriftSchemaConvertVisitor.java   |  2 +-
 .../apache/parquet/thrift/TestThriftSchemaConverter.java    | 13 +++++++++++++
 parquet-thrift/src/test/thrift/test.thrift                  |  4 ++++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/parquet-thrift/src/main/java/org/apache/parquet/thrift/ThriftSchemaConvertVisitor.java b/parquet-thrift/src/main/java/org/apache/parquet/thrift/ThriftSchemaConvertVisitor.java
index 7bfcdb1..4cd3cf5 100644
--- a/parquet-thrift/src/main/java/org/apache/parquet/thrift/ThriftSchemaConvertVisitor.java
+++ b/parquet-thrift/src/main/java/org/apache/parquet/thrift/ThriftSchemaConvertVisitor.java
@@ -314,7 +314,7 @@ class ThriftSchemaConvertVisitor implements ThriftType.StateVisitor<ConvertedFie
 
   @Override
   public ConvertedField visit(I16Type i16Type, State state) {
-    return visitPrimitiveType(INT32, state);
+    return visitPrimitiveType(INT32, LogicalTypeAnnotation.intType(16, true),state);
   }
 
   @Override
diff --git a/parquet-thrift/src/test/java/org/apache/parquet/thrift/TestThriftSchemaConverter.java b/parquet-thrift/src/test/java/org/apache/parquet/thrift/TestThriftSchemaConverter.java
index 2cde15b..5a7b209 100644
--- a/parquet-thrift/src/test/java/org/apache/parquet/thrift/TestThriftSchemaConverter.java
+++ b/parquet-thrift/src/test/java/org/apache/parquet/thrift/TestThriftSchemaConverter.java
@@ -28,6 +28,7 @@ import org.apache.parquet.thrift.struct.ThriftType;
 import org.apache.parquet.thrift.struct.ThriftType.StructType;
 import org.apache.parquet.thrift.test.compat.MapStructV2;
 import org.apache.parquet.thrift.test.compat.SetStructV2;
+import org.apache.parquet.thrift.test.TestLogicalType;
 import org.apache.thrift.TBase;
 import org.junit.Test;
 
@@ -337,4 +338,16 @@ public class TestThriftSchemaConverter {
     final ThriftType fromJSON = StructType.fromJSON(json);
     assertEquals(json, fromJSON.toJSON());
   }
+
+  @Test
+  public void testLogicalTypeConvertion() throws Exception {
+    String expected =
+      "message ParquetSchema {\n" +
+        "  required int32 test_i16 (INTEGER(16,true)) = 1;" +
+        "}";
+    ThriftSchemaConverter schemaConverter = new ThriftSchemaConverter();
+    final MessageType converted = schemaConverter.convert(TestLogicalType.class);
+    assertEquals(MessageTypeParser.parseMessageType(expected), converted);
+  }
+
 }
diff --git a/parquet-thrift/src/test/thrift/test.thrift b/parquet-thrift/src/test/thrift/test.thrift
index e759144..9b3ac85 100644
--- a/parquet-thrift/src/test/thrift/test.thrift
+++ b/parquet-thrift/src/test/thrift/test.thrift
@@ -95,3 +95,7 @@ struct StructWithExtraField {
   3: required Phone extraPhone,
   6: required Phone phone
 }
+
+struct TestLogicalType {
+  1: required i16 test_i16
+}