You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by "Deneche A. Hakim (JIRA)" <ji...@apache.org> on 2016/10/25 22:18:58 UTC
[jira] [Commented] (ARROW-337) UnionListWriter.list() is doing more
than it should, this can cause data corruption
[ 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)