

such as
```
create view view1 as 
with t as (select number n from numbers(3))
select n from t
```
{
                const auto & type_name = name_and_type_pair.type->getName();
                String message = "Cannot create table with column '" + name_and_type_pair.name + "' which type is '"
                                 + type_name + "' because experimental Map type is not allowed. "
                                 + "Set 'allow_experimental_map_type = 1' setting to enable";
                throw Exception(message, ErrorCodes::ILLEGAL_COLUMN);
            }
        }
    }
}
void InterpreterCreateQuery::setEngine(ASTCreateQuery & create) const
{
    if (create.as_table_function)
        return;
    if (create.storage || create.is_dictionary || create.isView())
    {
        if (create.temporary && create.storage && create.storage->engine && create.storage->engine->name != "Memory")
            throw Exception(
                "Temporary tables can only be created with ENGINE = Memory, not " + create.storage->engine->name,
                ErrorCodes::INCORRECT_QUERY);
        return;
    }
    if (create.temporary)
    {
        auto engine_ast = std::make_shared<ASTFunction>();
        engine_ast->name = "Memory";
        engine_ast->no_empty_args = true;
        auto storage_ast = std::make_shared<ASTStorage>();
        storage_ast->set(storage_ast->engine, engine_ast);
        create.set(create.storage, storage_ast);