When user requested single column from the table we still calculating all of them. Calculation of some columns is quite expensive (need to do stat calls / read files etc). 
columns_[j++]->insert(info.table);
            columns_[j++]->insert(info.engine);
            columns_[j++]->insert(part->volume->getDisk()->getName());
            columns_[j++]->insert(part->getFullPath());
            columns_[j++]->insert(column.name);
            columns_[j++]->insert(column.type->getName());
            columns_[j++]->insert(column_position);
            auto column_info_it = columns_info.find(column.name);
            if (column_info_it != columns_info.end())
            {
                columns_[j++]->insert(column_info_it->second.default_kind);
                columns_[j++]->insert(column_info_it->second.default_expression);
            }
            else
            {
                columns_[j++]->insertDefault();
                columns_[j++]->insertDefault();
            }
            ColumnSize column_size = part->getColumnSize(column.name, *column.type);
            columns_[j++]->insert(column_size.data_compressed + column_size.marks);
            columns_[j++]->insert(column_size.data_compressed);
            columns_[j++]->insert(column_size.data_uncompressed);
            columns_[j++]->insert(column_size.marks);
            if (has_state_column)
                columns_[j++]->insert(part->stateString());
        }
    }
}
}