[ 
https://issues.apache.org/jira/browse/ARROW-2328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16410081#comment-16410081
 ] 

ASF GitHub Bot commented on ARROW-2328:
---------------------------------------

xhochy commented on a change in pull request #1766: ARROW-2328: [C++] Writing a 
slice with feather ignores the offset.
URL: https://github.com/apache/arrow/pull/1766#discussion_r176529987
 
 

 ##########
 File path: cpp/src/arrow/ipc/feather.cc
 ##########
 @@ -558,8 +577,18 @@ class TableWriter::TableWriterImpl : public ArrayVisitor {
       // byte boundary, and we write this much data into the stream
       int64_t null_bitmap_size = 
GetOutputLength(BitUtil::BytesForBits(values.length()));
       if (values.null_bitmap()) {
-        RETURN_NOT_OK(WritePadded(stream_.get(), values.null_bitmap()->data(),
-                                  null_bitmap_size, &bytes_written));
+        auto null_bitmap = values.null_bitmap();
+        if (values.offset() > 0) {
+          if (!pool_) {
+            return Status::Invalid(
+                "Require memory pol to write array slice (i.e. offset > 0) 
with nulls.");
+          }
+          RETURN_NOT_OK(GetTruncatedBitmap(values.offset(), values.length(), 
null_bitmap,
+                                           pool_, &null_bitmap));
+        }
+
+        RETURN_NOT_OK(WritePadded(stream_.get(), null_bitmap->data(), 
null_bitmap_size,
 
 Review comment:
   Wouldn't it be better to extend `WritePadded` or write a second version of 
it that can handle bit-offsets? Using that way we could avoid the memory 
allocation for `GetTruncatedBitmap` above.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Writing a slice with feather ignores the offset
> -----------------------------------------------
>
>                 Key: ARROW-2328
>                 URL: https://issues.apache.org/jira/browse/ARROW-2328
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++
>    Affects Versions: 0.8.0
>            Reporter: Adrian
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 0.10.0
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> Writing a slice from row n of length m of an array to feather would write the 
> first m rows, instead of the rows starting at n.
> The null bitmap also ends up misaligned. Also tested and fixed in the pull 
> request below.
>  I've created a pull request with tests and fix here: 
> [Pullrequest#1766|https://github.com/apache/arrow/pull/1766]
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to