I'm trying to create a new user on a clickhouse cluster with  3 shards using this command:
`CREATE USER IF NOT EXISTS user ON CLUSTER '{cluster}' IDENTIFIED WITH sha256_password BY 'password' DEFAULT ROLE NONE`

This command gets expanded to:

`CREATE USER IF NOT EXISTS user ON CLUSTER {cluster} IDENTIFIED WITH sha256_hash BY '<hash>' SALT '<salt>' DEFAULT ROLE NONE`

However, on each of the shard I get this error:

`Syntax error: failed at position 123 ('SALT'): SALT '<salt>' DEFAULT ROLE NONE. Expected one of: HOST, SETTINGS, DEFAULT ROLE, GRANTEES, DEFAULT DATABASE, end of query.`

However, if I switch to use `plaintext_password` instead, everything works fine. Looks like the expansion and the addition of the "SALT" was not expected when handling this command.

* Which ClickHouse server version to use: 22.4

**Expected behavior**
The user to be created with no errors.

Thanks!
{
        AllowedClientHosts res_hosts;
        auto parse_host = [&]
        {
            if (ParserKeyword{"NONE"}.ignore(pos, expected))
                return true;
            if (ParserKeyword{"ANY"}.ignore(pos, expected))
            {
                res_hosts.addAnyHost();
                return true;
            }
            if (ParserKeyword{"LOCAL"}.ignore(pos, expected))
            {
                res_hosts.addLocalHost();
                return true;
            }
            if (ParserKeyword{"REGEXP"}.ignore(pos, expected))
            {
                ASTPtr ast;
                if (!ParserList{std::make_unique<ParserStringLiteral>(), std::make_unique<ParserToken>(TokenType::Comma), false}.parse(pos, ast, expected))
                    return false;
                for (const auto & name_regexp_ast : ast->children)
                    res_hosts.addNameRegexp(name_regexp_ast->as<const ASTLiteral &>().value.safeGet<String>());
                return true;
            }
            if (ParserKeyword{"NAME"}.ignore(pos, expected))
            {
                ASTPtr ast;
                if (!ParserList{std::make_unique<ParserStringLiteral>(), std::make_unique<ParserToken>(TokenType::Comma), false}.parse(pos, ast, expected))
                    return false;