

such as
```
create view view1 as 
with t as (select number n from numbers(3))
select n from t
```
if (create.replace_table)
    {
        if (database->getUUID() == UUIDHelpers::Nil)
            throw Exception(ErrorCodes::INCORRECT_QUERY,
                            "{} query is supported only for Atomic databases",
                            create.create_or_replace ? "CREATE OR REPLACE TABLE" : "REPLACE TABLE");
        UUID uuid_of_table_to_replace;
        if (create.create_or_replace)
        {
            uuid_of_table_to_replace = getContext()->tryResolveStorageID(StorageID(create.database, create.table)).uuid;
            if (uuid_of_table_to_replace == UUIDHelpers::Nil)
            {
                
                create.replace_table = false;
                assert(!database->isTableExist(create.table, getContext()));
            }
            else
                create.table = "_tmp_replace_" + toString(uuid_of_table_to_replace);
        }
        else
        {
            uuid_of_table_to_replace = getContext()->resolveStorageID(StorageID(create.database, create.table)).uuid;
            if (uuid_of_table_to_replace == UUIDHelpers::Nil)
                throw Exception(ErrorCodes::UNKNOWN_TABLE, "Table {}.{} doesn't exist",
                                backQuoteIfNeed(create.database), backQuoteIfNeed(create.table));
            create.table = "_tmp_replace_" + toString(uuid_of_table_to_replace);
        }
    }
}
BlockIO InterpreterCreateQuery::createTable(ASTCreateQuery & create)