Open ptribble opened 5 months ago
Attempting to build Arrow 16.0.0 (cpp) with -DARROW_PARQUET=ON on illumos (Solaris derivative) fails with:
In file included from /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.h:31, from /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:18: /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_writer.h:122:17: error: 'parquet::StreamWriter& parquet::StreamWriter::operator<<(char)' cannot be overloaded with 'parquet::StreamWriter& parquet::StreamWriter::operator<<(int8_t)' 122 | StreamWriter& operator<<(char v); | ^~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_writer.h:98:17: note: previous declaration 'parquet::StreamWriter& parquet::StreamWriter::operator<<(int8_t)' 98 | StreamWriter& operator<<(int8_t v); | ^~~~~~~~ In file included from /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:18: /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.h:116:17: error: 'parquet::StreamReader& parquet::StreamReader::operator>>(char&)' cannot be overloaded with 'parquet::StreamReader& parquet::StreamReader::operator>>(int8_t&)' 116 | StreamReader& operator>>(char& v); | ^~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.h:92:17: note: previous declaration 'parquet::StreamReader& parquet::StreamReader::operator>>(int8_t&)' 92 | StreamReader& operator>>(int8_t& v); | ^~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.h:167:17: error: 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional<char>&)' cannot be overloaded with 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional<char>&)' 167 | StreamReader& operator>>(optional<char>& v); | ^~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.h:143:17: note: previous declaration 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional<char>&)' 143 | StreamReader& operator>>(optional<int8_t>& v); | ^~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:159:15: error: redefinition of 'parquet::StreamReader& parquet::StreamReader::operator>>(char&)' 159 | StreamReader& StreamReader::operator>>(char& v) { | ^~~~~~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:83:15: note: 'parquet::StreamReader& parquet::StreamReader::operator>>(int8_t&)' previously defined here 83 | StreamReader& StreamReader::operator>>(int8_t& v) { | ^~~~~~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:255:15: error: redefinition of 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional<char>&)' 255 | StreamReader& StreamReader::operator>>(optional<char>& v) { | ^~~~~~~~~~~~ /export/home/ptribble/ud/apache-arrow-16.0.0-64bit/cpp/src/parquet/stream_reader.cc:183:15: note: 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional<char>&)' previously defined here 183 | StreamReader& StreamReader::operator>>(optional<int8_t>& v) { | ^~~~~~~~~~~~
In some way this is expected - int8_t and char are the same type:
/usr/include/sys/int_types.h: typedef char int8_t;
Deleting one or the other (and in StreamWriter) will allow the build to complete, but that doesn't seem quite right.
Is there a proper way to resolve the redefinition?
C++
On my macOS this is defined as typedef signed char int8_t; and perhaps by default char is unsigned char so it does not fail.
typedef signed char int8_t;
@ptribble Can you perhaps open a PR for this?
Describe the bug, including details regarding any error messages, version, and platform.
Attempting to build Arrow 16.0.0 (cpp) with -DARROW_PARQUET=ON on illumos (Solaris derivative) fails with:
In some way this is expected - int8_t and char are the same type:
Deleting one or the other (and in StreamWriter) will allow the build to complete, but that doesn't seem quite right.
Is there a proper way to resolve the redefinition?
Component(s)
C++