```
milovidov-desktop :) CREATE TABLE perf_lc_num(　        num UInt8,　        arr Array(LowCardinality(Int64)) default [num]　        ) ENGINE = TinyLog

CREATE TABLE perf_lc_num
(
    `num` UInt8,
    `arr` Array(LowCardinality(Int64)) DEFAULT [num]
)
ENGINE = TinyLog

Query id: e95f9a71-5795-4dea-8d80-4729fc8016b9

Ok.

0 rows in set. Elapsed: 0.002 sec. 

milovidov-desktop :) INSERT INTO perf_lc_num (num)
:-]         SELECT toUInt8(number)
:-]         FROM numbers(100000000)

INSERT INTO perf_lc_num (num) SELECT toUInt8(number)
FROM numbers(100000000)

Query id: 1101fd75-a545-4809-acb5-8afa2fae80c0


Received exception from server (version 20.13.1):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Got empty stream for DataTypeLowCardinality keys.: While executing SinkToOutputStream. 

0 rows in set. Elapsed: 0.045 sec. 

milovidov-desktop :) INSERT INTO perf_lc_num (num)　        SELECT toUInt8(number)　        FROM numbers(100000000)

INSERT INTO perf_lc_num (num) SELECT toUInt8(number)
FROM numbers(100000000)

Query id: 0ad8532a-5c6e-4590-84cd-7e00759d152d


Received exception from server (version 20.13.1):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Got empty stream for DataTypeLowCardinality keys.: While executing SinkToOutputStream. 

0 rows in set. Elapsed: 0.033 sec.
```

{
    Block res;
    if (is_finished || file_sizes.empty() || (!streams.empty() && streams.begin()->second->compressed.eof()))
    {
        /** Close the files (before destroying the object).
          * When many sources are created, but simultaneously reading only a few of them,
          * buffers don't waste memory.
          */
        is_finished = true;
        streams.clear();
        return {};
    }
    for (const auto & name_type : columns)
    {
        MutableColumnPtr column = name_type.type->createColumn();
        try
        {
            readData(name_type.name, *name_type.type, *column, block_size);
        }
        catch (Exception & e)
        {
            e.addMessage("while reading column " + name_type.name + " at " + fullPath(storage.disk, storage.table_path));
            throw;
        }