diff --git a/js/src/builder/union.ts b/js/src/builder/union.ts index 7bee460a77d..6b6f4d476dc 100644 --- a/js/src/builder/union.ts +++ b/js/src/builder/union.ts @@ -56,6 +56,7 @@ export abstract class UnionBuilder extends Builder const childIndex = this.type.typeIdToChildIndex[childTypeId!]; const child = this.children[childIndex]; child?.set(index, value); + this.length = Math.max(index + 1, this.length); } public addChild(child: Builder, name = `${this.children.length}`) { @@ -93,5 +94,6 @@ export class DenseUnionBuilder extends UnionB const child = this.getChildAt(this.type.typeIdToChildIndex[id])!; const denseIndex = this._offsets.set(index, child.length).buffer[index]; child?.set(denseIndex, value); + this.length = Math.max(index + 1, this.length); } } diff --git a/js/test/unit/builders/utils.ts b/js/test/unit/builders/utils.ts index 7cc0a075d84..1ea6a4e1f26 100644 --- a/js/test/unit/builders/utils.ts +++ b/js/test/unit/builders/utils.ts @@ -141,6 +141,7 @@ export function validateVector(vals: (T['TValue'] | null)[], let i = 0, x: T['TValue'] | null, y: T['TValue'] | null; const nulls = nullVals.reduce((m, x) => m.set(x, x), new Map()); try { + expect(vec).toHaveLength(vals.length); for (x of vec) { if (nulls.has(y = vals[i])) { expect(x).toBeNull();