You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by "Adam Hooper (Jira)" <ji...@apache.org> on 2019/11/29 22:44:00 UTC
[jira] [Created] (ARROW-7281) AdaptiveIntBuilder::length() does not
consider pending_pos_.
Adam Hooper created ARROW-7281:
----------------------------------
Summary: AdaptiveIntBuilder::length() does not consider pending_pos_.
Key: ARROW-7281
URL: https://issues.apache.org/jira/browse/ARROW-7281
Project: Apache Arrow
Issue Type: Bug
Components: C++
Affects Versions: 0.15.1
Reporter: Adam Hooper
{code:c++}
arrow::AdaptiveIntBuilder builder(arrow::default_memory_pool());
builder.Append(1);
std::cout << builder.length() << std::endl;
{code}
Expected output: {{1}}
Actual output: {{0}}
I imagine this regression came with https://github.com/apache/arrow/pull/3040
My use case: I'm building a JSON parser that appends "records" (JSON Objects mapping key=>value) to Arrow columns (each key gets an ArrayBuilder). Not all JSON Objects contain all keys; so {{builder.Append()}} isn't always called. So on a subsequent row, I want to add nulls for every append that was skipped: {{builder.AppendNulls(builder.length() - row); builder.Append(value)}}. This fails because {{builder.length()}} is wrong.
Annoying but simple workaround: I maintain a separate {{length}} value alongside {{builder}}.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)