**Describe the issue**
We have to set macro or to pass explicitly shard and replica name to create table in DatabaseReplicated

"The MaterializedMySQL database engine no longer supports Ordinary databases. To re-create the database, delete "
                        "the old one by executing \"rm -rf {}{{,.sql}}\", then re-create the database with the following query: {}",
                        metadata_path,
                        queryToString(print_create_ast)),
                    ErrorCodes::NOT_IMPLEMENTED);
            }
            return std::make_shared<DatabaseMaterializedMySQL>(
                context, database_name, metadata_path, uuid, configuration.database, std::move(mysql_pool),
                std::move(client), std::move(materialize_mode_settings));
        }
        catch (...)
        {
            const auto & exception_message = getCurrentExceptionMessage(true);
            throw Exception("Cannot create MySQL database, because " + exception_message, ErrorCodes::CANNOT_CREATE_DATABASE);
        }
    }
#endif
    else if (engine_name == "Lazy")
    {
        const ASTFunction * engine = engine_define->engine;
        if (!engine->arguments || engine->arguments->children.size() != 1)
            throw Exception("Lazy database require cache_expiration_time_seconds argument", ErrorCodes::BAD_ARGUMENTS);
        const auto & arguments = engine->arguments->children;
        const auto cache_expiration_time_seconds = safeGetLiteralValue<UInt64>(arguments[0], "Lazy");
        return std::make_shared<DatabaseLazy>(database_name, metadata_path, cache_expiration_time_seconds, context);
    }
    else if (engine_name == "Replicated")
    {
        const ASTFunction * engine = engine_define->engine;
        if (!engine->arguments || engine->arguments->children.size() != 3)