Uploaded image for project: 'Parquet'
  1. Parquet
  2. PARQUET-1169

Segment fault when using NextBatch of parquet::arrow::ColumnReader in parquet-cpp

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: cpp-1.4.0
    • Component/s: parquet-cpp
    • Labels:
      None

      Description

      When I running the below code, I consistently get segment fault, not sure whether this is a bug or I did something wrong. Anyone here could help me take a look?

      #include <iostream>
      #include <string>
      
      #include "arrow/array.h"
      #include "arrow/io/file.h"
      #include "arrow/test-util.h"
      #include "parquet/arrow/reader.h"
      
      using arrow::Array;
      using arrow::default_memory_pool;
      using arrow::io::FileMode;
      using arrow::io::MemoryMappedFile;
      using parquet::arrow::ColumnReader;
      using parquet::arrow::FileReader;
      using parquet::arrow::OpenFile;
      
      int main(int argc, char** argv) {
        if (argc > 1) {
          std::string file_name = argv[1];
          std::shared_ptr<MemoryMappedFile> file;
          ABORT_NOT_OK(MemoryMappedFile::Open(file_name, FileMode::READ, &file));
          std::unique_ptr<FileReader> file_reader;
          ABORT_NOT_OK(OpenFile(file, default_memory_pool(), &file_reader));
          std::unique_ptr<ColumnReader> column_reader;
          ABORT_NOT_OK(file_reader->GetColumn(0, &column_reader));
      
          std::shared_ptr<Array> array1;
          ABORT_NOT_OK(column_reader->NextBatch(1, &array1));
          std::cout << "length " << array1->length() << std::endl;
      
          std::shared_ptr<Array> array2;
          // segment fault
          ABORT_NOT_OK(column_reader->NextBatch(1, &array2));
          std::cout << "length " << array2->length() << std::endl;
        }
        return 0;
      }
      

      Command to compile this program:

      g++ test.c -I/usr/local/include/arrow -I/usr/local/include/parquet --std=c++11 -lparquet -larrow -lgtest -o parquet_test
      

      Command to run the program

      ./parquet_test test.parquet
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              frankfang Jian Fang
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: