Re: How to redirect output from PostgreSQL pg_recvlogical to a file or a pipe?

Francisco Olarte <folarte@peoplecall.com>

From: Francisco Olarte <folarte@peoplecall.com>
To: David Ventimiglia <davidaventimiglia@hasura.io>
Cc: pgsql-general@lists.postgresql.org
Date: 2024-01-12T19:50:24Z
Lists: pgsql-general
David:

On Fri, 12 Jan 2024 at 20:35, David Ventimiglia
<davidaventimiglia@hasura.io> wrote:
> pg_recvlogical -d postgres --slot test --start -f - >> sample.jsonl
>
> Lest there be any confusion, I already created the slot in an earlier step. Moreover, I can verify that if I omit the output redirection >> sample then it does work, insofar as it emits the expected change events when I perform DML in another terminal window. When I include the redirection (or alternatively, set up a pipeline), then nothing happens.

Have you tested the command as printed ( with -f - ) but without redirection?

Have you ruled out the usual suspect, stdout is line buffered when
going to a tty, full buffered when not ? ( by killing pg_revlogical
and/or insuring a long enough output is generated )

Francisco Olarte.