| 34 | /// For composite key |
| 35 | |
| 36 | Block blockForKeys( |
| 37 | const DictionaryStructure & dict_struct, |
| 38 | const Columns & key_columns, |
| 39 | const VectorWithMemoryTracking<size_t> & requested_rows) |
| 40 | { |
| 41 | Block block; |
| 42 | |
| 43 | for (size_t i = 0, size = key_columns.size(); i < size; ++i) |
| 44 | { |
| 45 | const ColumnPtr & source_column = key_columns[i]; |
| 46 | size_t column_rows_size = source_column->size(); |
| 47 | |
| 48 | PaddedPODArray<UInt8> filter(column_rows_size, false); |
| 49 | |
| 50 | for (size_t idx : requested_rows) |
| 51 | filter[idx] = true; |
| 52 | |
| 53 | auto filtered_column = source_column->filter(filter, requested_rows.size()); |
| 54 | |
| 55 | block.insert({filtered_column, (*dict_struct.key)[i].type, (*dict_struct.key)[i].name}); |
| 56 | } |
| 57 | |
| 58 | return block; |
| 59 | } |
| 60 | |
| 61 | |
| 62 | SettingsChanges readSettingsFromDictionaryConfig(const Poco::Util::AbstractConfiguration & config, const std::string & config_prefix) |