CREATE TABLE ... **EMPTY** AS SELECT

**Use case**

Create a table with the same structure as SELECT query returns but don't fill it.

**Describe alternatives you've considered**

CREATE TABLE ... AS DESCRIBE (SELECT ...)

\- more consistent but also more clunky.
}
    
    if (!s_as.ignore(pos, expected))
        return false;
    if (!select_p.parse(pos, select, expected))
        return false;
    auto comment = parseComment(pos, expected);
    auto query = std::make_shared<ASTCreateQuery>();
    node = query;
    query->attach = attach;
    query->if_not_exists = if_not_exists;
    query->is_ordinary_view = is_ordinary_view;
    query->is_materialized_view = is_materialized_view;
    query->is_populate = is_populate;
    query->replace_view = replace_view;
    auto * table_id = table->as<ASTTableIdentifier>();
    query->database = table_id->getDatabase();
    query->table = table_id->getTable();
    query->uuid = table_id->uuid;
    query->cluster = cluster_str;
    if (query->database)
        query->children.push_back(query->database);
    if (query->table)
        query->children.push_back(query->table);
    if (to_table)
        query->to_table_id = to_table->as<ASTTableIdentifier>()->getTableId();
    if (to_inner_uuid)
        query->to_inner_uuid = parseFromString<UUID>(to_inner_uuid->as<ASTLiteral>()->value.get<String>());
    query->set(query->columns_list, columns_list);
    query->set(query->storage, storage);