diff --git a/parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoWriteSupport.java b/parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoWriteSupport.java index 637f6fda91..389e842849 100644 --- a/parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoWriteSupport.java +++ b/parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoWriteSupport.java @@ -445,10 +445,13 @@ final void writeField(Object value) { private void writeAllFields(MessageOrBuilder pb) { Descriptor messageDescriptor = pb.getDescriptorForType(); - Descriptors.FileDescriptor.Syntax syntax = - messageDescriptor.getFile().getSyntax(); + String syntax = messageDescriptor.getFile().toProto().getSyntax(); + if ("editions".equals(syntax)) { + throw new UnsupportedOperationException("protocol buffers 'editions' not supported"); + } + boolean isProto2 = !"proto3".equals(syntax); - if (Descriptors.FileDescriptor.Syntax.PROTO2.equals(syntax)) { + if (isProto2) { // Returns changed fields with values. Map is ordered by id. Map changedPbFields = pb.getAllFields(); @@ -464,7 +467,7 @@ private void writeAllFields(MessageOrBuilder pb) { int fieldIndex = fieldDescriptor.getIndex(); fieldWriters[fieldIndex].writeField(entry.getValue()); } - } else if (Descriptors.FileDescriptor.Syntax.PROTO3.equals(syntax)) { + } else { List fieldDescriptors = messageDescriptor.getFields(); for (FieldDescriptor fieldDescriptor : fieldDescriptors) { FieldDescriptor.Type type = fieldDescriptor.getType();