Re: Handle PGRES_COPY_BOTH in psql for logical replication? - Mailing list pgsql-hackers

From Shulgin, Oleksandr
Subject Re: Handle PGRES_COPY_BOTH in psql for logical replication?
Date
Msg-id CACACo5Tw9WfZ7hE93aRcLoMgrav+xn3_AFWmsQi3dJMaTaRoXg@mail.gmail.com
Whole thread Raw
In response to Re: Handle PGRES_COPY_BOTH in psql for logical replication?  (Andres Freund <andres@anarazel.de>)
Responses Re: Handle PGRES_COPY_BOTH in psql for logical replication?  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
On Fri, Jun 5, 2015 at 9:26 AM, Andres Freund <andres@anarazel.de> wrote:
On 2015-06-05 09:20:41 +0200, Shulgin, Oleksandr wrote:
> Hello Hackers,
>
> At the moment one can open up a replication connection using psql and use
> all of the commands available on this special type of connection, except
> for START_REPLICATION:
>
> $ psql -d "dbname=test replication=database"
> psql (9.4.1)
> Type "help" for help.
>
> test=# IDENTIFY_SYSTEM;
>       systemid       | timeline |  xlogpos  | dbname
> ---------------------+----------+-----------+---------
>  6146106447402521313 |        1 | 0/76422B0 | bw_test
> (1 row)
>
> test=# START_REPLICATION SLOT test LOGICAL 0/0;
> unexpected PQresultStatus: 8
> test=#
>
> This is due to PGRES_COPY_BOTH not being handled in psql.  With
> introduction of logical replication I think it makes sense to support this
> mode, for the sake of (semi-)interactive testing from psql.

How would that look like? It's just binary data you'd get back? And what
would be the feedback messages and such look like, and what would be the
content?

It would be whatever the logical decoding plugin sends.  Makes perfect sense for OUTPUT_PLUGIN_TEXTUAL_OUTPUT to see it on the terminal.  And you could even use binary with psql's \o, if you want (though usefulness is less apparent to me in this case).

Since my intent is to just use it for testing the look of text logical output, I'm not planning any support for feedback messages in this case.

> For example, one could try replication from different wal positions,
> different output plugins and/or plugin options, w/o re-establishing the
> connection, interactively by editing the command directly in psql prompt,
> as opposed to using pg_recvlogical and editing the command line switches.

You can mostly use the sql functions for that.

Maybe I'm missing something, which functions do you have in mind exactly?

--
Alex

pgsql-hackers by date:

Previous
From: Jim Nasby
Date:
Subject: Re: RFC: Remove contrib entirely
Next
From: Andres Freund
Date:
Subject: Re: Handle PGRES_COPY_BOTH in psql for logical replication?