| 775 | |
| 776 | void registerDatabaseOrdinary(DatabaseFactory & factory); |
| 777 | void registerDatabaseOrdinary(DatabaseFactory & factory) |
| 778 | { |
| 779 | auto create_fn = [](const DatabaseFactory::Arguments & args) |
| 780 | { |
| 781 | if (!args.create_query.attach && !args.context->getSettingsRef()[Setting::allow_deprecated_database_ordinary]) |
| 782 | throw Exception( |
| 783 | ErrorCodes::UNKNOWN_DATABASE_ENGINE, |
| 784 | "Ordinary database engine is deprecated (see also allow_deprecated_database_ordinary setting)"); |
| 785 | |
| 786 | // Do not warn about ordinary databases that is most likely created by recovering replicas |
| 787 | if (!args.database_name.ends_with(DatabaseReplicated::BROKEN_TABLES_SUFFIX)) |
| 788 | args.context->addWarningMessageAboutDatabaseOrdinary(args.database_name); |
| 789 | else |
| 790 | args.context->addOrUpdateWarningMessage( |
| 791 | Context::WarningType::MAYBE_BROKEN_TABLES, |
| 792 | PreformattedMessage::create( |
| 793 | "The database {} is probably created during recovering a lost replica. If it has no tables, it can be deleted. If it " |
| 794 | "has tables, it worth to check why they were considered broken.", |
| 795 | backQuoteIfNeed(args.database_name))); |
| 796 | |
| 797 | DatabaseMetadataDiskSettings database_metadata_disk_settings; |
| 798 | auto * engine_define = args.create_query.storage; |
| 799 | chassert(engine_define); |
| 800 | database_metadata_disk_settings.loadFromQuery(*engine_define, args.context, isLoadingFromExistingMetadata(args.mode)); |
| 801 | |
| 802 | return make_shared<DatabaseOrdinary>(args.database_name, args.metadata_path, args.context, database_metadata_disk_settings); |
| 803 | }; |
| 804 | factory.registerDatabase("Ordinary", create_fn, /*features=*/{.supports_settings = true}, Documentation{ |
| 805 | .description = "The legacy, deprecated default database engine. It stores each table in its own metadata file and has been superseded by the `Atomic` engine.", |
| 806 | .syntax = "ENGINE = Ordinary", |
| 807 | .related = {"Atomic"}}); |
| 808 | } |
| 809 | } |
no test coverage detected