You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by "Ross Wolfson (Jira)" <ji...@apache.org> on 2020/04/20 22:40:00 UTC

[jira] [Created] (ARROW-8534) [C++][CSV] Issue building CSV component under GCC 6.1.0

Ross Wolfson created ARROW-8534:
-----------------------------------

             Summary: [C++][CSV] Issue building CSV component under GCC 6.1.0
                 Key: ARROW-8534
                 URL: https://issues.apache.org/jira/browse/ARROW-8534
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
    Affects Versions: 0.17.0
         Environment: Centos 7 x86_64
            Reporter: Ross Wolfson


Hi,

In the current version (0.17.0), it seems that CSV reader.cc fails to compile when using GCC 6.1.0. This builds when using older or newer GCC versions (we tested with 4.8.5, 8.2.0 and 9.3.0).

 

{{[root@1d4fcfc2580e arrow_src]# /ourgcc/gcc-6.1.0/bin/g++ -c cpp/src/arrow/csv/reader.cc -I cpp/src}}
{{cpp/src/arrow/csv/reader.cc: In constructor 'arrow::csv::SerialBlockReader::SerialBlockReader(std::unique_ptr<arrow::Chunker>, arrow::Iterator<std::shared_ptr<arrow::Buffer> >, std::shared_ptr<arrow::Buffer>)':}}
{{cpp/src/arrow/csv/reader.cc:178:22: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = arrow::Chunker; _Dp = std::default_delete<arrow::Chunker>]'}}
{{ using BlockReader::BlockReader;}}
{{ ^~~~~~~~~~~}}
{{In file included from /ourgcc/gcc-6.1.0/include/c++/6.1.0/memory:81:0,}}
{{ from cpp/src/arrow/csv/reader.h:20,}}
{{ from cpp/src/arrow/csv/reader.cc:18:}}
{{/ourgcc/gcc-6.1.0/include/c++/6.1.0/bits/unique_ptr.h:356:7: note: declared here}}
{{ unique_ptr(const unique_ptr&) = delete;}}
{{ ^~~~~~~~~~}}
{{cpp/src/arrow/csv/reader.cc:178:22: error: use of deleted function 'arrow::Iterator<std::shared_ptr<arrow::Buffer> >::Iterator(const arrow::Iterator<std::shared_ptr<arrow::Buffer> >&)'}}
{{ using BlockReader::BlockReader;}}
{{ ^~~~~~~~~~~}}
{{In file included from cpp/src/arrow/csv/reader.cc:43:0:}}
{{cpp/src/arrow/util/iterator.h:63:7: note: 'arrow::Iterator<std::shared_ptr<arrow::Buffer> >::Iterator(const arrow::Iterator<std::shared_ptr<arrow::Buffer> >&)' is implicitly deleted because the default definition would be ill-formed:}}
{{ class Iterator : public util::EqualityComparable<Iterator<T>> {}}
{{ ^~~~~~~~}}
{{cpp/src/arrow/util/iterator.h:63:7: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = void; _Dp = void (*)(void*)]'}}
{{In file included from /ourgcc/gcc-6.1.0/include/c++/6.1.0/memory:81:0,}}
{{ from cpp/src/arrow/csv/reader.h:20,}}
{{ from cpp/src/arrow/csv/reader.cc:18:}}
{{/ourgcc/gcc-6.1.0/include/c++/6.1.0/bits/unique_ptr.h:356:7: note: declared here}}
{{ unique_ptr(const unique_ptr&) = delete;}}
{{ ^~~~~~~~~~}}
{{cpp/src/arrow/csv/reader.cc: In member function 'virtual arrow::Result<std::shared_ptr<arrow::Table> > arrow::csv::SerialTableReader::Read()':}}
{{cpp/src/arrow/csv/reader.cc:750:88: note: synthesized method 'arrow::csv::SerialBlockReader::SerialBlockReader(std::unique_ptr<arrow::Chunker>, arrow::Iterator<std::shared_ptr<arrow::Buffer> >, std::shared_ptr<arrow::Buffer>)' first required here}}
{{ std::move(buffer_iterator_), std::move(first_buffer));}}
{{ ^}}
{{cpp/src/arrow/csv/reader.cc: In constructor 'arrow::csv::ThreadedBlockReader::ThreadedBlockReader(std::unique_ptr<arrow::Chunker>, arrow::Iterator<std::shared_ptr<arrow::Buffer> >, std::shared_ptr<arrow::Buffer>)':}}
{{cpp/src/arrow/csv/reader.cc:221:22: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = arrow::Chunker; _Dp = std::default_delete<arrow::Chunker>]'}}
{{ using BlockReader::BlockReader;}}
{{ ^~~~~~~~~~~}}
{{In file included from /ourgcc/gcc-6.1.0/include/c++/6.1.0/memory:81:0,}}
{{ from cpp/src/arrow/csv/reader.h:20,}}
{{ from cpp/src/arrow/csv/reader.cc:18:}}
{{/ourgcc/gcc-6.1.0/include/c++/6.1.0/bits/unique_ptr.h:356:7: note: declared here}}
{{ unique_ptr(const unique_ptr&) = delete;}}
{{ ^~~~~~~~~~}}
{{cpp/src/arrow/csv/reader.cc:221:22: error: use of deleted function 'arrow::Iterator<std::shared_ptr<arrow::Buffer> >::Iterator(const arrow::Iterator<std::shared_ptr<arrow::Buffer> >&)'}}
{{ using BlockReader::BlockReader;}}
{{ ^~~~~~~~~~~}}
{{cpp/src/arrow/csv/reader.cc: In member function 'virtual arrow::Result<std::shared_ptr<arrow::Table> > arrow::csv::ThreadedTableReader::Read()':}}
{{cpp/src/arrow/csv/reader.cc:815:61: note: synthesized method 'arrow::csv::ThreadedBlockReader::ThreadedBlockReader(std::unique_ptr<arrow::Chunker>, arrow::Iterator<std::shared_ptr<arrow::Buffer> >, std::shared_ptr<arrow::Buffer>)' first required here}}
{{ std::move(first_buffer));}}
{{ ^}}

 

My colleague found a workaround that avoids the build error, however, we are not clear if this is the "best" fix.

{{--- a/cpp/src/arrow/csv/reader.cc}}
{{+++ b/cpp/src/arrow/csv/reader.cc}}
{{@@ -175,7 +175,12 @@ class BlockReader {}}
{{ // using CSVBlock::consume_bytes.}}
{{ class SerialBlockReader : public BlockReader {}}
{{ public:}}
{{- using BlockReader::BlockReader;}}
{{+ SerialBlockReader(std::unique_ptr<Chunker> chunker,}}
{{+ Iterator<std::shared_ptr<Buffer>> buffer_iterator,}}
{{+ std::shared_ptr<Buffer> first_buffer)}}
{{+ : BlockReader(std::move(chunker),}}
{{+ std::move(buffer_iterator),}}
{{+ std::move(first_buffer)) {}}}{{Result<arrow::util::optional<CSVBlock>> Next() {}}
{{ if (buffer_ == nullptr) {}}
{{@@ -218,7 +223,12 @@ class SerialBlockReader : public BlockReader {}}
{{ // An object that reads delimited CSV blocks for threaded use.}}
{{ class ThreadedBlockReader : public BlockReader {}}
{{ public:}}
{{- using BlockReader::BlockReader;}}
{{+ ThreadedBlockReader(std::unique_ptr<Chunker> chunker,}}
{{+ Iterator<std::shared_ptr<Buffer>> buffer_iterator,}}
{{+ std::shared_ptr<Buffer> first_buffer)}}
{{+ : BlockReader(std::move(chunker),}}
{{+ std::move(buffer_iterator),}}
{{+ std::move(first_buffer)) {}}}{{Result<arrow::util::optional<CSVBlock>> Next() {}}
{{ if (buffer_ == nullptr) {}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)