| 819 | } |
| 820 | |
| 821 | MaterializeMySQLSyncThread::Buffers::BufferAndUniqueColumnsPtr MaterializeMySQLSyncThread::Buffers::getTableDataBuffer( |
| 822 | const String & table_name, ContextPtr context) |
| 823 | { |
| 824 | const auto & iterator = data.find(table_name); |
| 825 | if (iterator == data.end()) |
| 826 | { |
| 827 | StoragePtr storage = DatabaseCatalog::instance().getTable(StorageID(database, table_name + "_" + table_suffix), context); |
| 828 | |
| 829 | const StorageInMemoryMetadata & metadata = storage->getInMemoryMetadata(); |
| 830 | BufferAndUniqueColumnsPtr & buffer_and_unique_columns = data.try_emplace( |
| 831 | table_name, std::make_shared<BufferAndUniqueColumns>(metadata.getSampleBlockWithDeleteFlag(), std::vector<size_t>{})).first->second; |
| 832 | |
| 833 | /// We need to use unique key instead of sorting key as user could use table override func |
| 834 | Names required_for_unique_key = metadata.getColumnsRequiredForUniqueKey(); |
| 835 | |
| 836 | for (const auto & required_name_for_unique_key : required_for_unique_key) |
| 837 | buffer_and_unique_columns->second.emplace_back( |
| 838 | buffer_and_unique_columns->first.getPositionByName(required_name_for_unique_key)); |
| 839 | |
| 840 | return buffer_and_unique_columns; |
| 841 | } |
| 842 | |
| 843 | return iterator->second; |
| 844 | } |
| 845 | |
| 846 | String MaterializeMySQLSyncThread::Buffers::printBuffersInfo() |
| 847 | { |
no test coverage detected