```
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). 
{
                const auto add_decimal_field = [&](const auto & types) -> bool {
                    using Types = std::decay_t<decltype(types)>;
                    using ToDataType = typename Types::LeftType;
                    if constexpr (
                        std::is_same_v<ToDataType, DataTypeDecimal<Decimal32>>
                    || std::is_same_v<ToDataType, DataTypeDecimal<Decimal64>>
                    || std::is_same_v<ToDataType, DataTypeDecimal<Decimal128>>)
                    {
                        const auto & decimal_type = static_cast<const ToDataType *>(column_nested_type.get());
                        arrow_fields.emplace_back(std::make_shared<arrow::Field>(
                            column.name, arrow::decimal(decimal_type->getPrecision(), decimal_type->getScale()), is_column_nullable));
                    }
                    return false;
                };
                callOnIndexAndDataType<void>(column_nested_type->getTypeId(), add_decimal_field);
            }
            else
            {
                if (const auto * arrow_type_it = std::find_if(internal_type_to_arrow_type.begin(), internal_type_to_arrow_type.end(),
                    [=](auto && elem) { return elem.first == column_nested_type_name; });
                    arrow_type_it != internal_type_to_arrow_type.end())
                {
                    arrow_fields.emplace_back(std::make_shared<arrow::Field>(column.name, arrow_type_it->second, is_column_nullable));
                } else
                {
                    throw Exception{"The type \"" + column_nested_type_name + "\" of a column \"" + column.name + "\""
                                    " is not supported for conversion into a " + format_name + " data format",
                                    ErrorCodes::UNKNOWN_TYPE};
                }