**Use case**
For #15112

**Describe the solution you'd like**

SELECT ALL is identical to SELECT without DISTINCT.

If ALL is specified - ignore it.
If both ALL and DISTINCT are specified - syntax error or exception.

ALL can also be specified inside aggregate function:

SELECT sum(ALL x)

with the same effect (noop).
{
    ParserIdentifier id_parser;
    ParserKeyword distinct("DISTINCT");
    ParserExpressionList contents(false);
    ParserSelectWithUnionQuery select;
    ParserKeyword over("OVER");
    bool has_distinct_modifier = false;
    ASTPtr identifier;
    ASTPtr query;
    ASTPtr expr_list_args;
    ASTPtr expr_list_params;
    if (!id_parser.parse(pos, identifier, expected))
        return false;
    if (pos->type != TokenType::OpeningRoundBracket)
        return false;
    ++pos;
    if (distinct.ignore(pos, expected))
        has_distinct_modifier = true;
    else
    {
        auto old_pos = pos;
        auto maybe_an_subquery = pos->type == TokenType::OpeningRoundBracket;