Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
If you run the following 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());
You should expect it to print
[[0],[1]]
but it actually prints
[[0,1]]
If you change the code so that UnionListWriter.list() is called along with startList() then the code works fine:
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());