Re: doc: should pg_createsubscriber be grouped as a client application?

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, kuroda(dot)hayato(at)fujitsu(dot)com, pgsql-hackers(at)postgresql(dot)org
Subject: Re: doc: should pg_createsubscriber be grouped as a client application?
Date: 2026-06-23 10:39:23
Message-ID: CAA4eK1+d7kzzo=BtRF5o67u8BS7jjwbU6cj_W2nyW7_pELaE-g@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jun 23, 2026 at 3:26 PM Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
>
> On 22.06.26 09:46, Kyotaro Horiguchi wrote:
> > At Mon, 22 Jun 2026 06:56:45 +0000, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com> wrote in
> >> Dear Peter,
> >>
> >>> Note that the latter includes pg_basebackup, pg_receivewal, and
> >>> pg_recvlogical, which feel generally similar to pg_createsubscriber.
> >>
> >> Hmm, but similar command pg_upgrade was included in the server app page.
> >>
> >> The page [1] defined that server commands are the command can be run on the same
> >> server with the postgres server process. IIRC, the command was categorized as
> >> "Server Application" because it assumed standby is running on the same machine.
> >>
> >> But... I think the command is located on the border between the server and the client.
> >> We should hear other opinions too.
> >>
> >> [1]: https://www.postgresql.org/docs/devel/reference-server.html
> >
> > I also agree that pg_createsubscriber sits somewhere on the boundary
> > between server and client applications. If we were to draw a
> > distinction, one possible interpretation would be that server
> > applications are tools that access server resources beyond what a
> > regular client connection normally does. That seems broadly consistent
> > with the current classification, although pg_basebackup still feels
> > somewhat borderline under that interpretation.
>
> I agree it is borderline (otherwise this discussion would probably be
> unnecessary ;-) ), but I also think it should be one the same side of
> the grouping as the likes of pg_basebackup.
>

If we go by the definition of Client/Server from the docs at
doc/src/sgml/reference.sgml:
- Client: "The common feature of these applications is that they can
be run on any host, independent of where the database server resides."
- Server: "These commands can only be run usefully on the host where
the database server resides."

So the documented discriminator is locality of the data directory, not
libpq. By that rule pg_createsubscriber is a server application as
it takes -D pgdata of the target, and requires that target (a physical
standby) to run recovery on it. BTW, pg_rewind also takes a remote
--source-server libpq connection to a live server, yet it's a server
app, because it rewrites a local data directory. So I think "makes a
libpq connection" is not the right discriminator; if it were,
pg_rewind would have to move too.

Now, the other client tools like pg_basebackup, pg_receivewal /
pg_recvlogical don't need local data-dir access, so they are correctly
classified as Client tools.

--
With Regards,
Amit Kapila.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jim Jones 2026-06-23 11:02:34 Re: Add PRODUCT() aggregate function
Previous Message Peter Eisentraut 2026-06-23 10:29:14 for loop variable fixes