aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_dump/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_dump/common.c')
-rw-r--r--src/bin/pg_dump/common.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index 08239dde4f9..fba4b088715 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -52,6 +52,7 @@ static DumpableObject **oprinfoindex;
static DumpableObject **collinfoindex;
static DumpableObject **nspinfoindex;
static DumpableObject **extinfoindex;
+static DumpableObject **pubinfoindex;
static int numTables;
static int numTypes;
static int numFuncs;
@@ -59,6 +60,7 @@ static int numOperators;
static int numCollations;
static int numNamespaces;
static int numExtensions;
+static int numPublications;
/* This is an array of object identities, not actual DumpableObjects */
static ExtensionMemberId *extmembers;
@@ -93,6 +95,7 @@ getSchemaData(Archive *fout, int *numTablesPtr)
CollInfo *collinfo;
NamespaceInfo *nspinfo;
ExtensionInfo *extinfo;
+ PublicationInfo *pubinfo;
InhInfo *inhinfo;
int numAggregates;
int numInherits;
@@ -247,7 +250,9 @@ getSchemaData(Archive *fout, int *numTablesPtr)
getPolicies(fout, tblinfo, numTables);
pg_log_info("reading publications");
- getPublications(fout);
+ pubinfo = getPublications(fout, &numPublications);
+ pubinfoindex = buildIndexArray(pubinfo, numPublications,
+ sizeof(PublicationInfo));
pg_log_info("reading publication membership");
getPublicationTables(fout, tblinfo, numTables);
@@ -898,6 +903,17 @@ findExtensionByOid(Oid oid)
}
/*
+ * findPublicationByOid
+ * finds the entry (in pubinfo) of the publication with the given oid
+ * returns NULL if not found
+ */
+PublicationInfo *
+findPublicationByOid(Oid oid)
+{
+ return (PublicationInfo *) findObjectByOid(oid, pubinfoindex, numPublications);
+}
+
+/*
* findIndexByOid
* find the entry of the index with the given oid
*