apache / apache/arrow

[C++][Parquet] Build fails on illumos

Open
#41,338 2 comments 0 reactions 0 assignees View on GitHub
Component: C++ Type: bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.