Re: [HACKERS] Patch: Implement failover on libpq connect level.

Tsunakawa, Takayuki <tsunakawa.takay@jp.fujitsu.com>

From: "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
To: 'Craig Ringer' <craig@2ndquadrant.com>, Robert Haas <robertmhaas@gmail.com>
Cc: Kevin Grittner <kgrittn@gmail.com>, Mithun Cy <mithun.cy@enterprisedb.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Peter van Hardenberg <pvh@pvh.ca>, "pgsql-jdbc@postgresql.org" <pgsql-jdbc@postgresql.org>
Date: 2016-11-17T02:49:51Z
Lists: pgsql-hackers
From: pgsql-jdbc-owner@postgresql.org
> [mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of Craig Ringer
> >> If true, that's insane.  That can be different on each connection to
> >> the cluster and can change tens of thousands of times per second on
> >> any connection!
> >
> > I don't think that's insane.  The command is only being issued at
> > connection startup, and will only be different on different
> > connections if it's been configured that way.
> 
> I agree. However, I also think we should make sure add a GUC_REPORT var
> in v10 that lets a client tell whether it's connected to a read/write or
> read-only node right from the start. This will save an unnecessary
> round-trip and some annoying log-spam.

Yes, I meant the GUC_REPORT method.  I don't think something like read-only and read/write is intuitive as values values of target_server_type, because people who want to use reporting apps that use temporary tables have to connect to the primary, because temp tables are not supported on standbys.  I think the current notion of primary/standby is good; those who require temp tables need to specify primary.


> I'd rather not bind it directly to "in recovery" because we're likely to
> want to support read-only logical replication nodes in future, but even
> that would be OK.

Maybe we should determine the name and value of the connection parameter and GUC-REPORTed variable in light of the logical replication.

Regards
Takayuki Tsunakawa


Commits

  1. libpq: Add target_session_attrs parameter.

  2. Remove superuser checks in pgstattuple

  3. Fix unwanted flushing of libpq's input buffer when socket EOF is seen.