**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).
if (parseIntervalKind(pos, expected, interval_kind))
    {
        
        if (pos->type != TokenType::Comma)
            return false;
        ++pos;
        if (!ParserExpression().parse(pos, offset_node, expected))
            return false;
        if (pos->type != TokenType::Comma)
            return false;
        ++pos;
        if (!ParserExpression().parse(pos, timestamp_node, expected))
            return false;
        auto interval_expr_list_args = std::make_shared<ASTExpressionList>();
        interval_expr_list_args->children = {offset_node};
        interval_func_node = std::make_shared<ASTFunction>();
        interval_func_node->as<ASTFunction &>().name = interval_kind.toNameOfFunctionToIntervalDataType();
        interval_func_node->as<ASTFunction &>().arguments = std::move(interval_expr_list_args);
        interval_func_node->as<ASTFunction &>().children.push_back(interval_func_node->as<ASTFunction &>().arguments);
    }
    else
    {
        
        if (!ParserExpression().parse(pos, timestamp_node, expected))
            return false;
        if (pos->type != TokenType::Comma)
            return false;
        ++pos;
        if (!ParserIntervalOperatorExpression{}.parse(pos, interval_func_node, expected))
            return false;