On Fri, Mar 2, 2018 at 2:50 AM, Michael Paquier <mich...@paquier.xyz> wrote:
> On Thu, Mar 01, 2018 at 01:35:54AM -0800, Andres Freund wrote: > > On 2017-11-25 19:05:54 +0900, Michael Paquier wrote: > >> A Boolean value of <literal>true</literal> tells the backend > >> + to go into walsender mode, wherein a small set of replication > commands > >> + can be issued instead of SQL statements. > > > > This actually is wrong now I think. Petr? > > On more or less HEAD: > $ psql -X -d "replication=1 dbname=postgres" > postgres=# create table aa (a int); > ERROR: cannot execute SQL commands in WAL sender for physical replication > $ psql -X -d "replication=database dbname=postgres" > postgres=# create table aa (a int); > CREATE TABLE > > So one needs to use replication=database in order to be able to issue > normal SQL statements, while replication=true enforces physical > replication where this cannot happen (no connection to a specified > database). > To nitpick: + protocol. A Boolean value of <literal>true</literal> tells the backend We don't really have boolean values here, do we? It's just the string true that's treated as a boolean by the backend. It just sounds really weird to me when written that way. Particularly since the next sentence talks about passing "database" as the same thing. I know that's pretty much nitpicking, but I want to make sure I haven't actually missed/forgotten how some part of that one is handled.. It also talks separately about "going into walsender mode" (=physical replication) and "instructs the walsender to connect to the database". I think that's a bit confusing. I suggest just calling it "physical replication mode" and "logical replication mode", and not bother mentioning walsender since that's quite internal. -- Magnus Hagander Me: https://www.hagander.net/ <http://www.hagander.net/> Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>