[C++][Parquet] Build fails on illumos
- Dominant language
- C++
- Stars
- 17.1k
- Forks
- 4.3k
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 88
Description
### 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:
```text
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&)' cannot be overloaded with 'parquet::StreamReader& parquet::StreamReader::operator>>(parquet::StreamReader::optional&)'
167 | StreamReader& operator>>(optional& 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&)'
143 | StreamReader& operator>>(optional& 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&)'
255 | StreamReader& StreamReader::operator>>(optional& 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&)' previously defined here
183 | StreamReader& StreamReader::operator>>(optional& v) {
| ^~~~~~~~~~~~
```
In some way this is expected - int8_t and char are the same type:
```text
/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?
### Component(s)
C++
Contributor guide
Assessment
This issue has not been assessed yet.