mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
Add required database and origin filtering for logical messages.
Logical messages, added in3fe3511d05, during decoding failed to filter messages emitted in other databases and messages emitted "under" a replication origin the output plugin isn't interested in. Add tests to verify that both types of filtering actually work. While touching message.sql remove hunk obsoleted byd25379e. Bump XLOG_PAGE_MAGIC because xl_logical_message changed and because3fe3511d05had omitted doing so.3fe3511d05additionally didn't bump catversion, but7a542700dhas done so since. Author: Petr Jelinek Reported-By: Andres Freund Discussion: 20160406142513.wotqy3ba3kanr423@alap3.anarazel.de
This commit is contained in:
@@ -31,6 +31,8 @@
|
||||
|
||||
#include "postgres.h"
|
||||
|
||||
#include "miscadmin.h"
|
||||
|
||||
#include "access/xact.h"
|
||||
|
||||
#include "catalog/indexing.h"
|
||||
@@ -60,6 +62,7 @@ LogLogicalMessage(const char *prefix, const char *message, size_t size,
|
||||
GetCurrentTransactionId();
|
||||
}
|
||||
|
||||
xlrec.dbId = MyDatabaseId;
|
||||
xlrec.transactional = transactional;
|
||||
xlrec.prefix_size = strlen(prefix) + 1;
|
||||
xlrec.message_size = size;
|
||||
@@ -69,6 +72,9 @@ LogLogicalMessage(const char *prefix, const char *message, size_t size,
|
||||
XLogRegisterData((char *) prefix, xlrec.prefix_size);
|
||||
XLogRegisterData((char *) message, size);
|
||||
|
||||
/* allow origin filtering */
|
||||
XLogIncludeOrigin();
|
||||
|
||||
return XLogInsert(RM_LOGICALMSG_ID, XLOG_LOGICAL_MESSAGE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user