Alfred Mountfield created ARROW-15651: -----------------------------------------
Summary: Structs incorrectly initialise null values Key: ARROW-15651 URL: https://issues.apache.org/jira/browse/ARROW-15651 Project: Apache Arrow Issue Type: Bug Components: JavaScript Affects Versions: 7.0.0 Reporter: Alfred Mountfield Nullable StructArrays created with FixedSizeList fields seem to incorrectly initialise. I've tried to create them using both the `Builder` and `makeVector` methods and I believe it breaks the specification. I believe that the underlying arrays for the fields of a struct should be the length of the struct array. However the `nullCount`s, `numChildren`s, and other methods all return different numbers. (And this is causing a problem when we try to read the same memory within Rust as the lengths and offsets differ) Specifically this: {code:JavaScript} let list_field = new Field('n1', new FixedSizeList(2, Float64), true); let struct_field = new Field('foo', new Struct([list_field]), true); let builder = new Builder({ type:struct_field.type, nullValues: [null, undefined], }); builder.append(null); console.log('Builder:' + JSON.stringify(builder)); console.log('numChildren: ' + builder.numChildren); console.log('nullCount: ' + builder.nullCount); console.log('length: ' + builder.length); let vec1 = builder.toVector(); console.log('Vector from Builder:' + vec1); console.log('numChildren: ' + vec1.numChildren); console.log('nullCount: ' + vec1.nullCount); console.log('length: ' + vec1.length); let vec2 = makeVector({ data: [null], type:struct_field.type, nullable:true, }); console.log('Vector from makeVector:' + JSON.stringify(vec2)); console.log('numChildren: ' + vec2.numChildren); console.log('nullCount: ' + vec2.nullCount); console.log('length: ' + vec2.length); {code} Results in (I've removed some fields for brevity) {code:JavaScript} Builder: \{"length":1,"finished":false,"type":{"children":[{"name":"n1","type":{"listSize":2,"children":[null]},"nullable":true,"metadata":{}}]},"children":[],"nullValues":[null,null],"stride":1,"_nulls":\{"buffer": ... ,"stride":0.125,"BYTES_PER_ELEMENT":1,"length":1,"numValid":0}} numChildren: 0 nullCount: 1 length: 1 Vector from Builder:[] numChildren: 1 nullCount: 1 length: 1 Vector from makeVector:[] numChildren: 1 nullCount: 0 length: 0 {code} -- This message was sent by Atlassian Jira (v8.20.1#820001)