Thread: [HACKERS] Create publication syntax is not coming properly in pg_dump /pg_dumpall

Hi,

I observed that in pg_dump/pg_dumpall - 'create publication' syntax is 
not coming properly if only specified value  is mentioned in publish.

Testcase to reproduce -

\\create a publication

postgres=# CREATE PUBLICATION abc for all tables with (publish='insert');
CREATE PUBLICATION

\\take the plain dump

[centos@centos-cpula bin]$ ./pg_dump -FP -p 5000 postgres  > /tmp/a.a

\\check the syntax

[centos@centos-cpula bin]$ cat /tmp/a.a |grep 'create publication abc' -i
CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 'insert, , ');

\\try to execute the same syntax against psql terminal

postgres=# CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 
'insert, , ');
ERROR:  invalid publish list

Same is valid for pg_dumpall as well..

-- 
regards,tushar
EnterpriseDB  https://www.enterprisedb.com/
The Enterprise PostgreSQL Company




On Mon, May 15, 2017 at 5:04 PM, tushar <tushar.ahuja@enterprisedb.com> wrote:
> Hi,
>
> I observed that in pg_dump/pg_dumpall - 'create publication' syntax is not
> coming properly if only specified value  is mentioned in publish.
>
> Testcase to reproduce -
>
> \\create a publication
>
> postgres=# CREATE PUBLICATION abc for all tables with (publish='insert');
> CREATE PUBLICATION
>
> \\take the plain dump
>
> [centos@centos-cpula bin]$ ./pg_dump -FP -p 5000 postgres  > /tmp/a.a
>
> \\check the syntax
>
> [centos@centos-cpula bin]$ cat /tmp/a.a |grep 'create publication abc' -i
> CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 'insert, , ');
>
> \\try to execute the same syntax against psql terminal
>
> postgres=# CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 'insert, ,
> ');
> ERROR:  invalid publish list
>
> Same is valid for pg_dumpall as well..
>

Thank you for reporting.

Hm, It's a bug of pg_dump. Attached patch should fix both pg_dump and
pg_dumpall.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Attachment
On Mon, May 15, 2017 at 3:06 PM, Masahiko Sawada <sawada.mshk@gmail.com> wrote:
> On Mon, May 15, 2017 at 5:04 PM, tushar <tushar.ahuja@enterprisedb.com> wrote:
>> Hi,
>>
>> I observed that in pg_dump/pg_dumpall - 'create publication' syntax is not
>> coming properly if only specified value  is mentioned in publish.
>>
>> Testcase to reproduce -
>>
>> \\create a publication
>>
>> postgres=# CREATE PUBLICATION abc for all tables with (publish='insert');
>> CREATE PUBLICATION
>>
>> \\take the plain dump
>>
>> [centos@centos-cpula bin]$ ./pg_dump -FP -p 5000 postgres  > /tmp/a.a
>>
>> \\check the syntax
>>
>> [centos@centos-cpula bin]$ cat /tmp/a.a |grep 'create publication abc' -i
>> CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 'insert, , ');
>>
>> \\try to execute the same syntax against psql terminal
>>
>> postgres=# CREATE PUBLICATION abc FOR ALL TABLES WITH (publish = 'insert, ,
>> ');
>> ERROR:  invalid publish list
>>
>> Same is valid for pg_dumpall as well..
>>
>
> Thank you for reporting.
>
> Hm, It's a bug of pg_dump. Attached patch should fix both pg_dump and
> pg_dumpall.
>
I've reproduced the bug and the patch fixes the issue for me. Also,
tested with different combinations of insert, delete and update.

-- 
Thanks & Regards,
Kuntal Ghosh
EnterpriseDB: http://www.enterprisedb.com



Masahiko Sawada <sawada.mshk@gmail.com> writes:
> Hm, It's a bug of pg_dump. Attached patch should fix both pg_dump and
> pg_dumpall.

Pushed, thanks.
        regards, tom lane