From: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com> |
---|---|
To: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | pgsql-committers <pgsql-committers(at)postgresql(dot)org> |
Subject: | Re: pgsql: Generic Messages for Logical Decoding |
Date: | 2016-04-06 15:00:54 |
Message-ID: | CAHGQGwF3X1v5u8x+Nz_U5Ae_HJDpjGZVa9PXBw7LXQq7pwdeMA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
On Wed, Apr 6, 2016 at 6:08 PM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:
> Generic Messages for Logical Decoding
>
> API and mechanism to allow generic messages to be inserted into WAL that are
> intended to be read by logical decoding plugins. This commit adds an optional
> new callback to the logical decoding API.
When I specify very long text message, pg_xlogdump failed to dump
correctly the WAL file which should contain that inserted text message.
Isn't this a bug?
You can reproduce the problem by the following steps.
=# SELECT pg_xlogfile_name(pg_switch_xlog());
pg_xlogfile_name
--------------------------
000000010000000000000003
(1 row)
=# SELECT pg_xlogfile_name(pg_current_xlog_location());
pg_xlogfile_name
--------------------------
000000010000000000000003
(1 row)
=# SELECT pg_logical_emit_message(true, 'test',
repeat('0123456789ABCDEFG', 1024*1024));
pg_logical_emit_message
-------------------------
0/510CD40
(1 row)
=# SELECT pg_xlogfile_name(pg_current_xlog_location());
pg_xlogfile_name
--------------------------
000000010000000000000005
(1 row)
=# insert into t values(0,0);
INSERT 0 1
postgres=# SELECT pg_xlogfile_name(pg_current_xlog_location());
pg_xlogfile_name
--------------------------
000000010000000000000005
(1 row)
The WAL record of pg_logical_emit_message() should be stored in
000000010000000000000004 and 000000010000000000000005.
The WAL record of last insertion should be stored in
000000010000000000000005.
But the results of pg_xlogdump were wrong as follows.
$ pg_xlogdump data/pg_xlog/000000010000000000000004
rmgr: Standby len (rec/tot): 24/ 50, tx: 0, lsn:
0/04000028, prev 0/030146F8, desc: RUNNING_XACTS nextXid 863
latestCompletedXid 862 oldestRunningXid 863
$ pg_xlogdump data/pg_xlog/000000010000000000000005
pg_xlogdump: FATAL: could not find a valid record after 0/5000000
Regards,
--
Fujii Masao
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2016-04-06 15:06:25 | Re: pgsql: Generic Messages for Logical Decoding |
Previous Message | Simon Riggs | 2016-04-06 13:56:50 | pgsql: Modify test_decoding/messages to remove non-ascii chars |