pg_recvlogical broken in back branches - Mailing list pgsql-hackers

From Euler Taveira
Subject pg_recvlogical broken in back branches
Date
Msg-id CAHE3wgg8b-79jC626FhryirKZkJUP+Z4NQK10=1CSdFMVNHRgw@mail.gmail.com
Whole thread Raw
Responses Re: pg_recvlogical broken in back branches
List pgsql-hackers
Hi,

An issue [1] reported that pg_recvlogical emitted an error in 9.6.8. I
confirmed that it was broken in recent minor versions (9.6.8, 9.5.12,
9.4.17 -- using same server/client version). It was broken by commit
582edc369cdbd348d68441fc50fa26a84afd0c1a and its siblings.

$ postgres --version
postgres (PostgreSQL) 9.6.8
$ pg_recvlogical --version
pg_recvlogical (PostgreSQL) 9.6.8
$ pg_recvlogical -d postgres --slot test_slot --create-slot -P test_decoding
ERRO:  syntax error
pg_recvlogical: could not clear search_path: ERRO:  syntax error

Replication protocol supports queries since 10 so the code seems correct to it.

  * The capacity to run normal SQL queries was added in PostgreSQL
  * 10, so the search path cannot be changed (by us or attackers) on
  * earlier versions.

It seems version >= 10 should be checked in old clients too. Version
9.6.8 could not connect to 9.4.17.

$ pg_recvlogical --version
pg_recvlogical (PostgreSQL) 9.6.8

$ psql -p 9994 postgres
psql (9.6.8, servidor 9.4.17)
Digite "help" para ajuda.
$ pg_recvlogical -p 9994 -d postgres --slot test_slot --create-slot -P
test_decoding
pg_recvlogical: could not clear search_path: ERRO:  syntax error


A proposed fix is attached. It should be applied to 9.4, 9.5, 9.6, and
10. (Although, client version 10 can connect to server version 10,
client version 10 can't connect to server version 9.6.)

Comments?


[1] https://github.com/eulerto/wal2json/issues/61


-- 
   Euler Taveira                                   Timbira -
http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: SHOW ALL does not honor pg_read_all_settings membership
Next
From: Michael Paquier
Date:
Subject: Re: pg_recvlogical broken in back branches