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
