[ 
https://issues.apache.org/jira/browse/ARROW-337?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julien Le Dem resolved ARROW-337.
---------------------------------
    Resolution: Fixed

Issue resolved by 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)

Reply via email to