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 (!uuid_p.parse(pos, ast_uuid, expected))
            return false;
        uuid = parseFromString<UUID>(ast_uuid->as<ASTLiteral>()->value.get<String>());
    }
    if (ParserKeyword{"ON"}.ignore(pos, expected))
    {
        if (!ASTQueryWithOnCluster::parse(pos, cluster_str, expected))
            return false;
    }
    storage_p.parse(pos, storage, expected);
    auto comment = parseComment(pos, expected);
    if (!table_overrides_p.parse(pos, table_overrides, expected))
        return false;
    auto query = std::make_shared<ASTCreateQuery>();
    node = query;
    query->attach = attach;
    query->if_not_exists = if_not_exists;
    query->uuid = uuid;
    query->cluster = cluster_str;
    query->database = database;
    if (database)
        query->children.push_back(database);
    query->set(query->storage, storage);
    if (comment)
        query->set(query->comment, comment);
    if (table_overrides && !table_overrides->children.empty())
        query->set(query->table_overrides, table_overrides);
    return true;
}
bool ParserCreateViewQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)