From: | "Tsunakawa, Takayuki" <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com>, 'Craig Ringer' <craig(at)2ndquadrant(dot)com> |
Cc: | Magnus Hagander <magnus(at)hagander(dot)net>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Elvis Pranskevichus <elprans(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [PATCH v1] Add and report the new "in_hot_standby" GUC pseudo-variable. |
Date: | 2017-05-24 07:16:06 |
Message-ID: | 0A3221C70F24FB45833433255569204D1F6FCECC@G01JPEXMBYT05 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
From: pgsql-hackers-owner(at)postgresql(dot)org
> [mailto:pgsql-hackers-owner(at)postgresql(dot)org] On Behalf Of Craig Ringer
> On 13 April 2017 at 14:59, Tsunakawa, Takayuki
> <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com> wrote:
>
> > 2. Make transaction_read_only GUC_REPORT This is to avoid the added
> > round-trip by SHOW command. It also benefits client apps that want to
> know when the server gets promoted? And this may simplify the libpq code.
> > I don't understand yet why we need to provide this feature for older servers
> by using SHOW. Those who are already using <= 9.6 in production completed
> the system or application, and their business is running. Why would they
> want to just replace libpq and use this feature?
>
> I think "transaction_read_only" is a bit confusing for something we're
> expecting to change under us.
>
> To me, a "read only" xact is one created with
>
> BEGIN READ ONLY TRANSACTION;
>
> .... which I would not expect to become read/write under me, since I
> explicitly asked for read-only.
>
> It's more like "session read only" that we're interested in IMO.
I confirmed that the attached patch successfully provides:
* target_session_attrs=read-only
* If the server is >= 10, avoid the round-trip for SHOW transaction_read_only.
For this, I added a GUC_REPORT variable session_read_only which indicates the session's default read-only status. The characteristics are:
* It cannot be changed directly by the user (postgresql.conf, SET, etc.)
* Its value is the same as default_transaction_read_only when not in recovery.
* Its value is false during recovery.
Could you include this in PG 10? I think these are necessary as the bottom line to meet the average expectation of users (please don't ask me what's the average; the main reasons are that PostgreSQL provides hot standby, PgJDBC enables connection to the standby (targetServerType=slave), and PostgreSQL emphasizes performance.) Ideally, I wanted to add other features of PgJDBC (e.g. targetServerType=preferSlave), but I thought this is the limit not to endanger the quality of the final release.
Regards
Takayuki Tsunakawa
Attachment | Content-Type | Size |
---|---|---|
libpq-fast-connect-read-only.patch | application/octet-stream | 13.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Khandekar | 2017-05-24 09:17:03 | Re: UPDATE of partition key |
Previous Message | Fabien COELHO | 2017-05-24 07:14:14 | Re: pgbench more operators & functions |