```
create table test_lc(a LowCardinality(String)) Engine = MergeTree order by tuple();

insert into test_lc values ('abcd');

select * from test_lc format Parquet;

Exception on client:
Code: 50. DB::Exception: The type "LowCardinality" of a column "a" is not supported for conversion into a Parquet data format

Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.3.12 revision 54433.
```

Shorter version of the test:
```
select toLowCardinality('abcd') format Parquet;

Exception on client:
Code: 50. DB::Exception: The type "LowCardinality" of a column "toLowCardinality('abcd')" is not supported for conversion into a Parquet data format

Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.3.12 revision 54433.
```

<s>P.S. Insert works ok.</s>
```
# clickhouse-client --query="select 'ab' as a format Parquet" | clickhouse-client --query="insert into test_lc format Parquet"
```

UPD: not ok with `LowCardinality(Nullable(String))` (see comment). 
ColumnPtr write_column,
        std::shared_ptr<arrow::Array> & arrow_array,
        const PaddedPODArray<UInt8> * null_bytemap,
        const String & format_name)
    {
        const PaddedPODArray<NumericType> & internal_data = assert_cast<const ColumnVector<NumericType> &>(*write_column).getData();
        ArrowBuilderType builder;
        arrow::Status status;
        const UInt8 * arrow_null_bytemap_raw_ptr = nullptr;
        PaddedPODArray<UInt8> arrow_null_bytemap;
        if (null_bytemap)
        {
            
            arrow_null_bytemap.reserve(null_bytemap->size());
            for (auto is_null : *null_bytemap)
                arrow_null_bytemap.emplace_back(!is_null);
            arrow_null_bytemap_raw_ptr = arrow_null_bytemap.data();
        }
        if constexpr (std::is_same_v<NumericType, UInt8>)
            status = builder.AppendValues(
                reinterpret_cast<const uint8_t *>(internal_data.data()),
                internal_data.size(),
                reinterpret_cast<const uint8_t *>(arrow_null_bytemap_raw_ptr));
        else
            status = builder.AppendValues(internal_data.data(), internal_data.size(), reinterpret_cast<const uint8_t *>(arrow_null_bytemap_raw_ptr));
        checkStatus(status, write_column->getName(), format_name);