Re: PQclientEncoding() returns -1, resulting in possible assertion failure in psql - Mailing list pgsql-bugs

From Tom Lane
Subject Re: PQclientEncoding() returns -1, resulting in possible assertion failure in psql
Date
Msg-id 14465.1386526658@sss.pgh.pa.us
Whole thread Raw
In response to PQclientEncoding() returns -1, resulting in possible assertion failure in psql  (Peter Geoghegan <pg@heroku.com>)
Responses Re: PQclientEncoding() returns -1, resulting in possible assertion failure in psql  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Peter Geoghegan <pg@heroku.com> writes:
> It's possible to get psql to abort() in an assertion failure from
> legitimate input. If the server is shutdown, and PQclientEncoding()
> returns -1, that value can be passed to a site that expects a valid
> encoding.

> If the call to PQclientEncoding() from processSQLNamePattern() (plus
> probably from other places) gets an encoding of -1, (called when we
> "\df+ somefunc" after the server is gone - you may have to do it
> twice), that can be passed down to PQmblen(), which will in turn pass
> that value to pg_encoding_mblen(), which doesn't expect it.

A simple fix might be to return SQL_ASCII not -1.  I don't think the
-1 behavior is documented or relied on anywhere, is it?

Otherwise, we could check for live connection somewhere much earlier
in the processing of \d and friends.  But it might be difficult to
find a single choke point for doing that, rendering the reliability
of the fix somewhat suspect.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Diway
Date:
Subject: bug with json_array_elements on big table ?
Next
From: Tom Lane
Date:
Subject: Re: PQclientEncoding() returns -1, resulting in possible assertion failure in psql