```
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). 
std::shared_ptr<arrow::Table> & res,
        const Block & header,
        const Chunk & chunk,
        size_t columns_num,
        String format_name)
    {
        
        std::vector<std::shared_ptr<arrow::Field>> arrow_fields;
        std::vector<std::shared_ptr<arrow::Array>> arrow_arrays;
        arrow_fields.reserve(columns_num);
        arrow_arrays.reserve(columns_num);
        for (size_t column_i = 0; column_i < columns_num; ++column_i)
        {
            
            ColumnWithTypeAndName column = header.safeGetByPosition(column_i);
            column.column = chunk.getColumns()[column_i];
            const bool is_column_nullable = column.type->isNullable();
            const auto & column_nested_type
                = is_column_nullable ? static_cast<const DataTypeNullable *>(column.type.get())->getNestedType() : column.type;
            const String column_nested_type_name = column_nested_type->getFamilyName();
            if (isDecimal(column_nested_type))