[
https://issues.apache.org/jira/browse/PARQUET-388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14985793#comment-14985793
]
Reuben Kuhnert commented on PARQUET-388:
----------------------------------------
I'm a little confused on this one, because the signature for
{{ProtoRecordConverter}} is:
{code}
public class ProtoRecordConverter<T extends MessageOrBuilder> extends
ProtoMessageConverter { ... }
{code}
And both {{Message}} and {{Message.Builder}} both extend from this:
{code}
// Message.java
public interface Message extends MessageLite, MessageOrBuilder {
...
public interface Builder extends Builder, MessageOrBuilder { ... }
}
{code}
So technically it is correct that the current record could be either
{{Message}} or {{Message.Builder}}.
> ProtoRecordConverter might wrongly cast a Message.Builder to Message
> --------------------------------------------------------------------
>
> Key: PARQUET-388
> URL: https://issues.apache.org/jira/browse/PARQUET-388
> Project: Parquet
> Issue Type: Bug
> Components: parquet-mr
> Reporter: Wu Xiang
> Assignee: Reuben Kuhnert
>
> ProtoRecordConverter returns current record as follows:
> {code}
> public T getCurrentRecord() {
> if (buildBefore) {
> return (T) this.reusedBuilder.build();
> } else {
> return (T) this.reusedBuilder;
> }
> }
> {code}
> However this might fail if T is subclass of Message and buildBefore == false,
> since it's actually casting a Message.Builder instance to Message type.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)