Ordinary database engine is deprecated but there is no simple mean to change database engine to Atomic for existing databases.

Possible options:
- ALTER DATABASE MODIFY ENGINE query.
- Flag that triggers migration at ClickHouse startup.

The latter should be easier to implement. 

class SettingsChanges;
using DictionariesWithID = std::vector<std::pair<String, UUID>>;
struct ParsedTablesMetadata;
struct QualifiedTableName;
class IRestoreCoordination;
namespace ErrorCodes
{
    extern const int NOT_IMPLEMENTED;
    extern const int CANNOT_GET_CREATE_TABLE_QUERY;
    extern const int LOGICAL_ERROR;
}
class IDatabaseTablesIterator
{
public:
    virtual void next() = 0;
    virtual bool isValid() const = 0;
    virtual const String & name() const = 0;
    
    
    
    virtual const StoragePtr & table() const = 0;
    explicit IDatabaseTablesIterator(const String & database_name_) : database_name(database_name_) { }
    explicit IDatabaseTablesIterator(String && database_name_) : database_name(std::move(database_name_)) { }
    virtual ~IDatabaseTablesIterator() = default;
    virtual UUID uuid() const { return UUIDHelpers::Nil; }
    const String & databaseName() const { assert(!database_name.empty()); return database_name; }
protected:
    String database_name;
};
class DatabaseTablesSnapshotIterator : public IDatabaseTablesIterator