Re: pgsql: Remove pqsignal() from libpq's official exports list.

Christoph Berg <myon@debian.org>

From: Christoph Berg <myon@debian.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2019-10-09T07:33:54Z
Lists: pgsql-hackers
Re: Tom Lane 2019-10-08 <9333.1570566305@sss.pgh.pa.us>
> Having said all that, if we conclude we can't break compatibility
> with this legacy code quite yet, I'd be inclined to put a
> separate, clearly-marked-as-legacy-code version of pqsignal()
> back into libpq, using the pre-9.3 SA_RESTART semantics.

That would be nice.

> But I'd like some pretty well-defined sunset time for that,
> because it'd just be trouble waiting to happen.  When are
> you going to remove 9.2 psql?

Note that this change caused breakage on the wiki.postgresql.org
infrastructure which still had an old 9.2 psql running. It wasn't
Debian's fault that it had not been upgraded yet.

But I refuse to buy the argument that I'm doing something wrong here.
Shared libraries have SONAMEs to prevent *exactly* this kind of
breakage. If you are removing symbols, bump the SONAME.

Christoph



Commits

  1. Put back pqsignal() as an exported libpq symbol.

  2. Remove pqsignal() from libpq's official exports list.

  3. Build src/port files as a library with -fPIC, and use that in libpq.

  4. Use SA_RESTART for all signals, including SIGALRM.

  5. Move pqsignal() to libpgport.