MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / loadSystemDatabaseImpl

Function loadSystemDatabaseImpl

src/Interpreters/loadMetadata.cpp:342–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

340}
341
342static void loadSystemDatabaseImpl(ContextMutablePtr context, const String & database_name, const String & default_engine)
343{
344 /// If it is already loaded.
345 if (DatabaseCatalog::instance().isDatabaseExist(database_name))
346 return;
347
348 auto default_db_disk = Context::getGlobalContextInstance()->getDatabaseDisk();
349 auto metadata_file = DatabaseCatalog::getMetadataFilePath(database_name);
350 auto metadata_tmp_file = DatabaseCatalog::getMetadataTmpFilePath(database_name);
351 default_db_disk->removeFileIfExists(metadata_tmp_file);
352
353 LOG_TEST(
354 getLogger("loadSystemDatabase"),
355 "metadata_file_path {}, existsFile {}",
356 metadata_file,
357 default_db_disk->existsFile(metadata_file));
358 if (default_db_disk->existsFile(metadata_file))
359 {
360 /// 'has_force_restore_data_flag' is true, to not fail on loading query_log table, if it is corrupted.
361 loadDatabase(context, database_name, metadata_file, true);
362 }
363 else
364 {
365 checkUnsupportedVersion(context, database_name);
366 /// Initialize system database manually
367 String database_create_query = "CREATE DATABASE ";
368 database_create_query += database_name;
369 database_create_query += " ENGINE=";
370 database_create_query += default_engine;
371 executeCreateQuery(database_create_query, context, database_name, "<no file>", true, true);
372 }
373}
374
375static void convertOrdinaryDatabaseToAtomic(LoggerPtr log, ContextMutablePtr context, const DatabasePtr & database,
376 const String & name, const String tmp_name)

Callers 1

loadMetadataSystemFunction · 0.85

Calls 8

loadDatabaseFunction · 0.85
checkUnsupportedVersionFunction · 0.85
executeCreateQueryFunction · 0.85
isDatabaseExistMethod · 0.80
getDatabaseDiskMethod · 0.80
getLoggerFunction · 0.70
removeFileIfExistsMethod · 0.45
existsFileMethod · 0.45

Tested by

no test coverage detected