| 348 | }; |
| 349 | |
| 350 | IStorageCloudFile::IStorageCloudFile( |
| 351 | ContextPtr context_, |
| 352 | const StorageID & table_id_, |
| 353 | const ColumnsDescription & required_columns_, |
| 354 | const ConstraintsDescription & constraints_, |
| 355 | const FileClientPtr & client_, |
| 356 | Strings files_, |
| 357 | const ASTPtr & setting_changes_, |
| 358 | const CnchFileArguments & arguments_, |
| 359 | const CnchFileSettings & settings_) |
| 360 | : IStorage(table_id_) |
| 361 | , WithMutableContext(context_->getGlobalContext()) |
| 362 | , client(client_) |
| 363 | , file_list(std::move(files_)) |
| 364 | , arguments(arguments_) |
| 365 | , settings(settings_) |
| 366 | { |
| 367 | StorageInMemoryMetadata metadata; |
| 368 | metadata.setSettingsChanges(setting_changes_); |
| 369 | metadata.setColumns(required_columns_); |
| 370 | metadata.setConstraints(constraints_); |
| 371 | setInMemoryMetadata(metadata); |
| 372 | |
| 373 | if (file_list.empty()) |
| 374 | throw Exception("Can't allow read empty file list", ErrorCodes::LOGICAL_ERROR); |
| 375 | String path = arguments.url.substr(arguments.url.find('/', arguments.url.find("//") + 2)); |
| 376 | arguments.is_glob_path = path.find_first_of("*?{") != std::string::npos; |
| 377 | |
| 378 | auto default_virtuals = NamesAndTypesList{{"_path", std::make_shared<DataTypeString>()}, {"_file", std::make_shared<DataTypeString>()}}; |
| 379 | virtual_columns = getVirtualsForStorage(metadata.getSampleBlock().getNamesAndTypesList(), default_virtuals); |
| 380 | } |
| 381 | |
| 382 | Pipe IStorageCloudFile::read( |
| 383 | const Names & column_names, |
nothing calls this directly
no test coverage detected