I think there are potentially other places in the Arrow code base that
"optional" could be useful (e.g. a row-reader like class for Arrow
Tables).  It looks like there is at least 1 header only optional library
[1] that is c++17 forward compatible.  I think I would lean towards
vendoring that or another header only library, instead of depending on
boost (I would need to double check and seem to recall there being
difference between boost and the standard one).

[1] https://github.com/martinmoene/optional-lite

On Thu, Nov 14, 2019 at 1:22 PM Gawain Bolton <gawain.bol...@free.fr> wrote:

> Hello,
>
> I would like to add support for handling optional fields to the
> parquet::StreamReader and parquet::StreamWriter classes which I recently
> contributed (thank you!).
>
> Ideally I would do this by using std::optional like this:
>
>      parquet::StreamWriter writer{ parquet::ParquetFileWriter::Open(...) };
>
>      std::optional<double> d;
>
>      writer << d;
>
>      ...
>
>      parquet::StreamReader os{parquet::ParquetFileReader::Open(...)};
>
>      reader >> d;
>
> However std::optional is only available in C++17 and arrow is compiled
> in C++11 mode.
>
>  From what I see arrow does use Boost to a limited extent and in fact
> gandiva/cache.h uses the boost::optional class.
>
> So would it be possible to use the boost::optional class in parquet?
>
> Or perhaps someone can suggest another way of handling optional fields?
>
> Thanks in advance for your help,
>
> Gawain
>
>
>

Reply via email to