Re: Patch: Implement failover on libpq connect level.
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Catalin Iacob <iacobcatalin@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
Mithun Cy <mithun.cy@enterprisedb.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>,
Peter van Hardenberg <pvh@pvh.ca>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2016-11-15T18:28:47Z
Lists: pgsql-hackers
On Tue, Nov 15, 2016 at 12:53 PM, Catalin Iacob <iacobcatalin@gmail.com> wrote: > On Tue, Nov 15, 2016 at 5:58 PM, Robert Haas <robertmhaas@gmail.com> wrote: >> On Tue, Nov 15, 2016 at 9:42 AM, Alvaro Herrera >> <alvherre@2ndquadrant.com> wrote: >>> I would rather come up with something that works in both cases that we >>> can extend internally later, say pg_is_primary_node() or something like >>> that instead; and we implement it initially by returning the inverse of >>> pg_is_in_recovery() for replicated non-logical flocks, while we figure >>> out what to do in logical replication. Otherwise it will be harder to >>> change later if we embed it in libpq, and we may be forced into >>> supporting nonsensical situations such as having pg_is_in_recovery() >>> return true for logical replication primary nodes. >> >> I don't think we'll be backed into a corner like that, because we can >> always make this contingent on server version. libpq will have that >> available. > > But even with server version checking code, that code will be inside > libpq so there will be old libpq versions in the field that won't know > the proper query to send to new server versions. Good point. pg_is_writable_node() sounds good, then, and we can still send pg_is_in_recovery() if we're connected to a pre-10 version. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
libpq: Add target_session_attrs parameter.
- 721f7bd3cbcc 10.0 landed
-
Remove superuser checks in pgstattuple
- fd321a1dfd64 10.0 cited
-
Fix unwanted flushing of libpq's input buffer when socket EOF is seen.
- c405918858c0 9.6.0 cited