arrow-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Deneche A. Hakim (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ARROW-337) UnionListWriter.list() is doing more than it should, this can cause data corruption
Date Tue, 25 Oct 2016 22:18:58 GMT

    [ https://issues.apache.org/jira/browse/ARROW-337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15606639#comment-15606639
] 

Deneche A. Hakim commented on ARROW-337:
----------------------------------------

opened pull request [#183|https://github.com/apache/arrow/pull/183]

> UnionListWriter.list() is doing more than it should, this can cause data corruption
> -----------------------------------------------------------------------------------
>
>                 Key: ARROW-337
>                 URL: https://issues.apache.org/jira/browse/ARROW-337
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Java - Vectors
>            Reporter: Deneche A. Hakim
>            Assignee: Deneche A. Hakim
>
> If you run the following code:
> {code}
>     MapVector parent = new MapVector("parent", allocator, null);
>     ComplexWriter writer = new ComplexWriterImpl("root", parent);
>     MapWriter rootWriter = writer.rootAsMap();
>     ListWriter listWriter = rootWriter.list("list");
>     ListWriter list = listWriter.list();
>     rootWriter.start();
>     {
>       listWriter.startList();
>       {
>         list.startList();
>         list.bigInt().writeBigInt(0);
>         list.endList();
>       }
>       {
>         list.startList();
>         list.bigInt().writeBigInt(1);
>         list.endList();
>       }
>       listWriter.endList();
>     }
>     rootWriter.end();
>     writer.setValueCount(1);
>     MapReader rootReader = new SingleMapReaderImpl(parent).reader("root");
>     System.out.println(rootReader.reader("list").readObject());
> {code}
> You should expect it to print {noformat}[[0],[1]]{noformat}
> but it actually prints {noformat}[[0,1]]{noformat}
> If you change the code so that UnionListWriter.list() is called along with startList()
then the code works fine:
> {code}
>     MapVector parent = new MapVector("parent", allocator, null);
>     ComplexWriter writer = new ComplexWriterImpl("root", parent);
>     MapWriter rootWriter = writer.rootAsMap();
>     rootWriter.start();
>     {
>       ListWriter listWriter = rootWriter.list("mylist");
>       listWriter.startList();
>       {
>         ListWriter list = listWriter.list();
>         list.startList();
>         list.bigInt().writeBigInt(0);
>         list.endList();
>       }
>       {
>         ListWriter list = listWriter.list();
>         list.startList();
>         list.bigInt().writeBigInt(1);
>         list.endList();
>       }
>       listWriter.endList();
>     }
>     rootWriter.end();
>     writer.setValueCount(1);
>     MapReader rootReader = new SingleMapReaderImpl(parent).reader("root");
>     System.out.println(rootReader.reader("mylist").readObject());
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message