Nandor Kollar created PARQUET-1305:
--------------------------------------

             Summary: Backward incompatible change introduced in 1.8
                 Key: PARQUET-1305
                 URL: https://issues.apache.org/jira/browse/PARQUET-1305
             Project: Parquet
          Issue Type: Bug
            Reporter: Nandor Kollar
            Assignee: Nandor Kollar


ThriftSchemaConverter#convert(StructType struct) introduced a backward 
incompatible logic in Parquet 1.8, If StructType's [deprecated 
constructor|https://github.com/apache/parquet-mr/blob/master/parquet-thrift/src/main/java/org/apache/parquet/thrift/struct/ThriftType.java#L225]
 is used to create StructTypes, and this convert method is used, then the 
client receives the following exception:
{code}
org.apache.parquet.ShouldNeverHappenException: Encountered UNKNOWN 
StructOrUnionType

        at 
org.apache.parquet.thrift.ThriftSchemaConvertVisitor.isUnion(ThriftSchemaConvertVisitor.java:342)
        at 
org.apache.parquet.thrift.ThriftSchemaConvertVisitor.visit(ThriftSchemaConvertVisitor.java:218)
        at 
org.apache.parquet.thrift.ThriftSchemaConvertVisitor.visit(ThriftSchemaConvertVisitor.java:74)
        at 
org.apache.parquet.thrift.struct.ThriftType$StructType.accept(ThriftType.java:269)
        at 
org.apache.parquet.thrift.ThriftSchemaConvertVisitor.convert(ThriftSchemaConvertVisitor.java:93)
        at 
org.apache.parquet.thrift.ThriftSchemaConverter.convert(ThriftSchemaConverter.java:75)
{code}

To illustrate the issue, here's a test case, which passes on older versions, 
but fails on master:
{code}
  @Test
  public void testIncompatibleThriftConverterChange() {
    ThriftSchemaConverter converter = new ThriftSchemaConverter();

    ThriftType.StructType structType = new ThriftType.StructType(
      asList(
        new ThriftField("a", (short)1, REQUIRED, new ThriftType.StringType()),
        new ThriftField("b", (short) 2, REQUIRED, new ThriftType.StringType())
      )
    );
    converter.convert(structType);
  }
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to