As discussed with @kitaisreal 
const IMergeTreeReader::ValueSizeMap & IMergeTreeReader::getAvgValueSizeHints() const
{
    return avg_value_size_hints;
}
static bool arrayHasNoElementsRead(const IColumn & column)
{
    const auto * column_array = typeid_cast<const ColumnArray *>(&column);
    if (!column_array)
        return false;
    size_t size = column_array->size();
    if (!size)
        return false;
    size_t data_size = column_array->getData().size();
    if (data_size)
        return false;
    size_t last_offset = column_array->getOffsets()[size - 1];
    return last_offset != 0;
}
void IMergeTreeReader::fillMissingColumns(Columns & res_columns, bool & should_evaluate_missing_defaults, size_t num_rows)