**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).
{
    
    
    ASTPtr expr_node;
    ASTPtr start_node;
    ASTPtr length_node;
    if (!ParserKeyword("SUBSTRING").ignore(pos, expected))
        return false;
    if (pos->type != TokenType::OpeningRoundBracket)
        return false;
    ++pos;
    if (!ParserExpression().parse(pos, expr_node, expected))
        return false;
    if (pos->type != TokenType::Comma)
    {
        if (!ParserKeyword("FROM").ignore(pos, expected))
            return false;
    }
    else
    {
        ++pos;
    }
    if (!ParserExpression().parse(pos, start_node, expected))
        return false;
    if (pos->type == TokenType::ClosingRoundBracket)
    {