Dear Arrow developers,

I'm investigating if the Arrow library would be useful in our server
backend application and I am having some questions:

1) How can a value in an Array/Table be updated? In the examples that I
have seen a table is constructed using ArrayBuilders, which results in
Arrays that can be used to construct a Table with a Schema. It is unclear
to me how to update a value once this process has been executed. Perhaps
updating should be implemented in terms of Slicing/RecordBatches instead of
Tables? Or is Arrow more suitable for static data and updating values does
not fit into the general idea of Arrow.
2) If updating is not possible to implement for all types of Arrays, is
this a reasonable feature request for a DictionaryArray?
3) Does the StringDictionaryBuilder execute some fancy run length
encoding/zipping in Finish? If not, is this a reasonable feature request?
4) Do all memory allocations occur in a given MemoryPool? More specifically
if a (NUMA aware) allocator is provided where possible in the API (by
subclassing MemoryPool?) will this allocator then be used for all
allocations?
5) Does the Arrow library have static variables (not constexpr) that are
frequently accessed or that allocate memory during compute function
execution?
6) How can application threads be provided to the compute framework,
something like asio::io_context? Other than a bool async_mode in ExecPlan I
couldn't find anything in the API related to multi threading.

Best regards,

Matthieu

Reply via email to