[ 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)