• Tom Lane's avatar
    Fix recently-introduced breakage in psql's \connect command. · 7e5e1bba
    Tom Lane authored
    Through my misreading of what the existing code actually did,
    commits 85c54287 et al. broke psql's behavior for the case where
    "\c connstring" provides a password in the connstring.  We should
    use that password in such a case, but as of 85c54287 we ignored it
    (and instead, prompted for a password).
    
    Commit 94929f1c fixed that in HEAD, but since I thought it was
    cleaning up a longstanding misbehavior and not one I'd just created,
    I didn't back-patch it.
    
    Hence, back-patch the portions of 94929f1c having to do with
    password management.  In addition to fixing the introduced bug,
    this means that "\c -reuse-previous=on connstring" will allow
    re-use of an existing connection's password if the connstring
    doesn't change user/host/port.  That didn't happen before, but
    it seems like a bug fix, and anyway I'm loath to have significant
    differences in this code across versions.
    
    Also fix an error with the same root cause about whether or not to
    override a connstring's setting of client_encoding.  As of 85c54287
    we always did so; restore the previous behavior of overriding only
    when stdin/stdout are a terminal and there's no environment setting
    of PGCLIENTENCODING.  (I find that definition a bit surprising, but
    right now doesn't seem like the time to revisit it.)
    
    Per bug #16746 from Krzysztof Gradek.  As with the previous patch,
    back-patch to all supported branches.
    
    Discussion: https://postgr.es/m/16746-44b30e2edf4335d4@postgresql.org
    7e5e1bba
command.c 133 KB