```
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). 
column_data.emplace_back(timestamp);
            }
        }
    }
    static void fillColumnWithDecimalData(std::shared_ptr<arrow::ChunkedArray> & arrow_column, MutableColumnPtr & internal_column)
    {
        auto & column = assert_cast<ColumnDecimal<Decimal128> &>(*internal_column);
        auto & column_data = column.getData();
        column_data.reserve(arrow_column->length());
        for (size_t chunk_i = 0, num_chunks = static_cast<size_t>(arrow_column->num_chunks()); chunk_i < num_chunks; ++chunk_i)
        {
            auto & chunk = static_cast<arrow::DecimalArray &>(*(arrow_column->chunk(chunk_i)));
            for (size_t value_i = 0, length = static_cast<size_t>(chunk.length()); value_i < length; ++value_i)
            {
                column_data.emplace_back(chunk.IsNull(value_i) ? Decimal128(0) : *reinterpret_cast<const Decimal128 *>(chunk.Value(value_i))); 
            }
        }
    }
    static void fillByteMapFromArrowColumn(std::shared_ptr<arrow::ChunkedArray> & arrow_column, MutableColumnPtr & bytemap)
    {
        PaddedPODArray<UInt8> & bytemap_data = assert_cast<ColumnVector<UInt8> &>(*bytemap).getData();
        bytemap_data.reserve(arrow_column->length());
        for (size_t chunk_i = 0; chunk_i != static_cast<size_t>(arrow_column->num_chunks()); ++chunk_i)
        {
            std::shared_ptr<arrow::Array> chunk = arrow_column->chunk(chunk_i);
            for (size_t value_i = 0; value_i != static_cast<size_t>(chunk->length()); ++value_i)
                bytemap_data.emplace_back(chunk->IsNull(value_i));
        }
    }
    void ArrowColumnToCHColumn::arrowTableToCHChunk(Chunk & res, std::shared_ptr<arrow::Table> & table,