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

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

Github user wesm commented on the issue:

    https://github.com/apache/arrow/pull/1204
  
    @kou what can I do about the GLib build failures?


> [C++] Correctly truncate oversized validity bitmaps when writing Feather 
> format
> -------------------------------------------------------------------------------
>
>                 Key: ARROW-1676
>                 URL: https://issues.apache.org/jira/browse/ARROW-1676
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++
>    Affects Versions: 0.7.1
>         Environment: libarrow-dev
> Architecture: amd64
> Version: 0.7.1-1
> Python 2.7.13
> >>> pyarrow.__version__
> '0.7.1'
> >>> feather.__version__
> '0.4.0'
> >>> pandas.__version__
> u'0.20.3'
>            Reporter: Rares Vernica
>            Assignee: Wes McKinney
>              Labels: pull-request-available
>             Fix For: 0.8.0
>
>
> An extra {{0}} appears in the beginning when serializing and deserializing an 
> array with more than {{128}} values and at least one {{NULL}} value using 
> {{Feather}}. Once the extra {{0}} is inserted a value is trimmed at the end.
> Here is the C++ code to write such an array:
> {code:java}
> #include <iostream>
> #include <arrow/api.h>
> #include <arrow/io/file.h>
> #include <arrow/ipc/feather.h>
> #include <arrow/pretty_print.h>
> int main() {
>   // 1. Build Array
>   arrow::DoubleBuilder builder;
>   for (int i = 0; i < 129; i++)
>       if (i == 0)
>           builder.AppendNull();
>       else
>           builder.Append(i);
>   std::shared_ptr<arrow::Array> array;
>   builder.Finish(&array);
>   arrow::PrettyPrint(*array, 0, &std::cout);
>   std::cout << std::endl;
>   // 2. Write to Feather file
>   std::shared_ptr<arrow::io::FileOutputStream> stream;
>   arrow::io::FileOutputStream::Open("out.f", false, &stream);
>   std::unique_ptr<arrow::ipc::feather::TableWriter> writer;
>   arrow::ipc::feather::TableWriter::Open(stream, &writer);
>   writer->SetNumRows(129);
>   writer->Append("id", *array);
>   writer->Finalize();
>   stream->Close();
>   return 0;
> }
> {code}
> The output of running this code is:
> {code:java}
> # g++-4.9 -std=c++11 example.cpp -larrow && ./a.out
> [null, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
> 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
> 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 
> 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
> 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 
> 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 
> 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
> 128]
> {code}
> The array is deserialized in Python and looks like this:
>  
> {code:java}
> >>> pandas.read_feather('out.f')
>         id
> 0      NaN
> 1      0.0
> 2      1.0
> 3      2.0
> 4      3.0
> 5      4.0
> 6      5.0
> 7      6.0
> 8      7.0
> 9      8.0
> 10     9.0
> 11    10.0
> 12    11.0
> 13    12.0
> 14    13.0
> 15    14.0
> 16    15.0
> 17    16.0
> 18    17.0
> 19    18.0
> 20    19.0
> 21    20.0
> 22    21.0
> 23    22.0
> 24    23.0
> 25    24.0
> 26    25.0
> 27    26.0
> 28    27.0
> 29    28.0
> ..     ...
> 99    98.0
> 100   99.0
> 101  100.0
> 102  101.0
> 103  102.0
> 104  103.0
> 105  104.0
> 106  105.0
> 107  106.0
> 108  107.0
> 109  108.0
> 110  109.0
> 111  110.0
> 112  111.0
> 113  112.0
> 114  113.0
> 115  114.0
> 116  115.0
> 117  116.0
> 118  117.0
> 119  118.0
> 120  119.0
> 121  120.0
> 122  121.0
> 123  122.0
> 124  123.0
> 125  124.0
> 126  125.0
> 127  126.0
> 128  127.0
> [129 rows x 1 columns]
> {code}
> Notice the {{0.0}} value on index {{1}}. The value should have been {{1.0}}. 
> Also, the last value is {{127.0}} instead of {{128.0}}.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to