Re: Proposal: Generic WAL logical messages - Mailing list pgsql-hackers

From Andres Freund
Subject Re: Proposal: Generic WAL logical messages
Date
Msg-id 20160406142513.wotqy3ba3kanr423@alap3.anarazel.de
Whole thread Raw
In response to Re: Proposal: Generic WAL logical messages  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
On 2016-04-06 16:20:29 +0200, Andres Freund wrote:
> On 2016-04-06 10:15:59 -0400, Tom Lane wrote:
> > > In some ways it seems like the argument to pg_logical_emit_message(...) should
> > > be 'bytea'. That'd be much more convenient for application use. But then
> > > it's a pain when using it via the text-format SQL interface calls, where
> > > we've got no sensible way to output it.
> 
> There's a bytea version.
> 
> > Well, that's something worth thinking about.  I assume that
> > pg_logical_slot_get_changes could be executed in a database different from
> > the one where a change was originated?
> 
> You can execute it, but you'll get an error:
>     if (slot->data.database != MyDatabaseId)
>         ereport(ERROR,
>                 (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
>           (errmsg("replication slot \"%s\" was not created in this database",
>                   NameStr(slot->data.name)))));

Or so I thought. A look at the code shows a lack of database filtering
in DecodeLogicalMsgOp().  I think it also misses a FilterByOrigin()
check.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Proposal: Generic WAL logical messages
Next
From: Andres Freund
Date:
Subject: Re: Proposal: Generic WAL logical messages