Benjamin Kietzman created ARROW-5935:
----------------------------------------

             Summary: [C++] ArrayBuilders with mutable type are not robustly 
supported
                 Key: ARROW-5935
                 URL: https://issues.apache.org/jira/browse/ARROW-5935
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
            Reporter: Benjamin Kietzman
            Assignee: Benjamin Kietzman


(Dense|Sparse)UnionBuilder, DictionaryBuilder, Addaptive(U)IntBuilders and any 
nested builder which contains one of those may Finish to an array whose type 
disagrees with what was passed to MakeBuilder. This is not well documented or 
supported; ListBuilder checks if its child has changed type but StructBuilder 
does not. Furthermore ListBuilder's check does not catch modifications to a 
DictionaryBuidler's type and results in an invalid array on Finish: 
https://github.com/apache/arrow/blob/1bcfbe1/cpp/src/arrow/array-dict-test.cc#L951-L994

Let's add to the ArrayBuilder contract: the type property is null iff that 
builder's type is indeterminate until Finish() is called. Then all nested 
builders can check this on their children at construction and bubble type 
mutability correclty



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to