aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/common
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2013-12-10 19:17:34 -0500
committerRobert Haas <rhaas@postgresql.org>2013-12-10 19:17:34 -0500
commit66abc2608c7c00fcd449e00a9e23f13f02e65d04 (patch)
treea8c2e194383d6313752c5540888f3c2e5bd98f02 /src/backend/access/common
parente55704d8b2fe522fbc9435acbb5bc59033478bd5 (diff)
downloadpostgresql-66abc2608c7c00fcd449e00a9e23f13f02e65d04.tar.gz
postgresql-66abc2608c7c00fcd449e00a9e23f13f02e65d04.zip
Add a new reloption, user_catalog_table.
When this reloption is set and wal_level=logical is configured, we'll record the CIDs stamped by inserts, updates, and deletes to the table just as we would for an actual catalog table. This will allow logical decoding to use historical MVCC snapshots to access such tables just as they access ordinary catalog tables. Replication solutions built around the logical decoding machinery will likely need to set this operation for their configuration tables; it might also be needed by extensions which perform table access in their output functions. Andres Freund, reviewed by myself and others.
Diffstat (limited to 'src/backend/access/common')
-rw-r--r--src/backend/access/common/reloptions.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index b5fd30a4f95..31941e99edb 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -63,6 +63,14 @@ static relopt_bool boolRelOpts[] =
},
{
{
+ "user_catalog_table",
+ "Declare a table as an additional catalog table, e.g. for the purpose of logical replication",
+ RELOPT_KIND_HEAP
+ },
+ false
+ },
+ {
+ {
"fastupdate",
"Enables \"fast update\" feature for this GIN index",
RELOPT_KIND_GIN
@@ -1166,6 +1174,8 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
offsetof(StdRdOptions, security_barrier)},
{"check_option", RELOPT_TYPE_STRING,
offsetof(StdRdOptions, check_option_offset)},
+ {"user_catalog_table", RELOPT_TYPE_BOOL,
+ offsetof(StdRdOptions, user_catalog_table)}
};
options = parseRelOptions(reloptions, validate, kind, &numoptions);