Executable settings like `max_command_execution_time` or `command_termination_timeout` cannot be set for `executable()` table function at all. Which means that the hardcoded values will be used.
I suggest to add it to executable function definition.
The simplest way is:
```
SELECT * FROM executable('<script name>', '<format>', (SET max_command_execution_time=100), (SELECT * FROM table))
```
As executable constructor already parses input `SELECT` statements anyway, adding `SET` statement there seems pretty logical.
Ideas? Any other better API?
I can implement that one.
{
    ASTPtr expr_ast;
    if (!elem_parser->parse(pos, expr_ast, expected))
        return false;
    ASTPtr type_ast;
    if (ParserToken(TokenType::DoubleColon).ignore(pos, expected)
        && ParserDataType().parse(pos, type_ast, expected))
    {
        node = createFunctionCast(expr_ast, type_ast);
    }
    else
    {
        node = expr_ast;
    }
    return true;
}
bool ParserArrayElementExpression::parseImpl(Pos & pos, ASTPtr & node, Expected &expected)
{
    return ParserLeftAssociativeBinaryOperatorList{
        operators,
        std::make_unique<ParserCastExpression>(std::make_unique<ParserExpressionElement>()),
        std::make_unique<ParserExpressionWithOptionalAlias>(false)
    }.parse(pos, node, expected);
}
bool ParserTupleElementExpression::parseImpl(Pos & pos, ASTPtr & node, Expected &expected)