20#include "catalog/pg_am_d.h"
21#include "catalog/pg_class_d.h"
22#include "catalog/pg_collation_d.h"
23#include "catalog/pg_extension_d.h"
24#include "catalog/pg_namespace_d.h"
25#include "catalog/pg_operator_d.h"
26#include "catalog/pg_proc_d.h"
27#include "catalog/pg_publication_d.h"
28#include "catalog/pg_subscription_d.h"
29#include "catalog/pg_type_d.h"
66#define SH_PREFIX catalogid
67#define SH_ELEMENT_TYPE CatalogIdMapEntry
68#define SH_KEY_TYPE CatalogId
70#define SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &(key), sizeof(CatalogId))
71#define SH_EQUAL(tb, a, b) ((a).oid == (b).oid && (a).tableoid == (b).tableoid)
73#define SH_GET_HASH(tb, a) (a)->hashval
74#define SH_SCOPE static inline
75#define SH_RAW_ALLOCATOR pg_malloc0
80#define CATALOGIDHASH_INITIAL_SIZE 10000
143 pg_log_info(
"reading user-defined aggregate functions");
149 pg_log_info(
"reading user-defined access methods");
152 pg_log_info(
"reading user-defined operator classes");
155 pg_log_info(
"reading user-defined operator families");
158 pg_log_info(
"reading user-defined text search parsers");
161 pg_log_info(
"reading user-defined text search templates");
164 pg_log_info(
"reading user-defined text search dictionaries");
167 pg_log_info(
"reading user-defined text search configurations");
170 pg_log_info(
"reading user-defined foreign-data wrappers");
173 pg_log_info(
"reading user-defined foreign servers");
191 pg_log_info(
"reading table inheritance information");
205 pg_log_info(
"reading column info for interesting tables");
208 pg_log_info(
"flagging inherited columns in subtables");
217 pg_log_info(
"flagging indexes in partitioned tables");
238 pg_log_info(
"reading publication membership of tables");
241 pg_log_info(
"reading publication membership of schemas");
247 pg_log_info(
"reading subscription membership of relations");
305 if (parent ==
NULL ||
310 pg_fatal(
"failed sanity check, parent OID %u of table \"%s\" (OID %u) not found",
335 if (tblinfo[
i].dobj.dump)
340 for (
j = 0;
j < numParents;
j++)
341 parents[
j]->interesting =
true;
351 if (tblinfo[
i].numParents != 1)
352 pg_fatal(
"invalid number of parents %d for table \"%s\"",
353 tblinfo[
i].numParents,
354 tblinfo[
i].dobj.name);
394 if (!tblinfo[
i].ispartition || tblinfo[
i].numParents == 0)
397 Assert(tblinfo[
i].numParents == 1);
405 if (
index->parentidx == 0)
409 if (parentidx ==
NULL)
441 index->indextable->dobj.dumpId);
531 for (k = 0; k < numParents; k++)
548 if (
fout->remoteVersion < 180000 &&
559 if (
fout->remoteVersion >= 180000 &&
573 tbinfo->attrdefs[
j]->adef_expr) == 0)
587 tbinfo->notnull_islocal[
j] =
false;
595 tbinfo->notnull_islocal[
j] =
true;
611 attrDef->dobj.catId.tableoid = 0;
661 dobj->namespace =
NULL;
1123 if (s ==
' ' || s ==
'\0')
1128 pg_fatal(
"could not parse numeric array \"%s\": too many numbers",
str);
1138 if (!(
isdigit((
unsigned char) s) || s ==
'-') ||
1139 j >=
sizeof(
temp) - 1)
1140 pg_fatal(
"could not parse numeric array \"%s\": invalid character in number",
str);
1164 if (
strcmp(pattern, arr[
i]) == 0)
void recordAdditionalCatalogID(CatalogId catId, DumpableObject *dobj)
void recordExtensionMembership(CatalogId catId, ExtensionInfo *ext)
static void flagInhAttrs(Archive *fout, DumpOptions *dopt, TableInfo *tblinfo, int numTables)
FuncInfo * findFuncByOid(Oid oid)
TableInfo * findTableByOid(Oid oid)
static void flagInhTables(Archive *fout, TableInfo *tblinfo, int numTables, InhInfo *inhinfo, int numInherits)
static void flagInhIndexes(Archive *fout, TableInfo *tblinfo, int numTables)
ExtensionInfo * findExtensionByOid(Oid oid)
CollInfo * findCollationByOid(Oid oid)
SubscriptionInfo * findSubscriptionByOid(Oid oid)
OprInfo * findOprByOid(Oid oid)
NamespaceInfo * findNamespaceByOid(Oid oid)
AccessMethodInfo * findAccessMethodByOid(Oid oid)
void addObjectDependency(DumpableObject *dobj, DumpId refId)
DumpableObject * findObjectByDumpId(DumpId dumpId)
static int allocedDumpIds
void parseOidArray(const char *str, Oid *array, int arraysize)
ExtensionInfo * findOwningExtension(CatalogId catalogId)
TableInfo * getSchemaData(Archive *fout, int *numTablesPtr)
TypeInfo * findTypeByOid(Oid oid)
static IndxInfo * findIndexByOid(Oid oid)
DumpId createDumpId(void)
DumpableObject * findObjectByCatalogId(CatalogId catalogId)
void AssignDumpId(DumpableObject *dobj)
DumpId getMaxDumpId(void)
static DumpableObject ** dumpIdMap
#define CATALOGIDHASH_INITIAL_SIZE
static int strInArray(const char *pattern, char **arr, int arr_size)
void getDumpableObjects(DumpableObject ***objs, int *numObjs)
static catalogid_hash * catalogIdHash
PublicationInfo * findPublicationByOid(Oid oid)
struct _catalogIdMapEntry CatalogIdMapEntry
void removeObjectDependency(DumpableObject *dobj, DumpId refId)
#define Assert(condition)
#define OidIsValid(objectId)
char * pg_strdup(const char *in)
#define pg_realloc_array(pointer, type, count)
#define pg_malloc_array(type, count)
#define palloc_object(type)
#define pg_malloc_object(type)
void getConstraints(Archive *fout, TableInfo tblinfo[], int numTables)
ExtensionInfo * getExtensions(Archive *fout, int *numExtensions)
void getPublicationNamespaces(Archive *fout)
void getPartitioningInfo(Archive *fout)
InhInfo * getInherits(Archive *fout, int *numInherits)
void getForeignDataWrappers(Archive *fout)
void getPolicies(Archive *fout, TableInfo tblinfo[], int numTables)
void getExtensionMembership(Archive *fout, ExtensionInfo extinfo[], int numExtensions)
void getTypes(Archive *fout)
void getOwnedSeqs(Archive *fout, TableInfo tblinfo[], int numTables)
void getOpclasses(Archive *fout)
void getForeignServers(Archive *fout)
void getFuncs(Archive *fout)
void getTSDictionaries(Archive *fout)
void getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables)
void getCasts(Archive *fout)
void getIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
void getTSConfigurations(Archive *fout)
void getAccessMethods(Archive *fout)
void getConversions(Archive *fout)
void getRules(Archive *fout)
void getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
void getCollations(Archive *fout)
void getAggregates(Archive *fout)
void getNamespaces(Archive *fout)
void getPublications(Archive *fout)
void getTSParsers(Archive *fout)
TableInfo * getTables(Archive *fout, int *numTables)
void getExtendedStatistics(Archive *fout)
void processExtensionTables(Archive *fout, ExtensionInfo extinfo[], int numExtensions)
void getDefaultACLs(Archive *fout)
void getSubscriptions(Archive *fout)
void getTriggers(Archive *fout, TableInfo tblinfo[], int numTables)
void getTransforms(Archive *fout)
void getEventTriggers(Archive *fout)
void getTSTemplates(Archive *fout)
void getProcLangs(Archive *fout)
bool shouldPrintColumn(const DumpOptions *dopt, const TableInfo *tbinfo, int colno)
void getSubscriptionRelations(Archive *fout)
void getOperators(Archive *fout)
void getOpfamilies(Archive *fout)
#define DUMP_COMPONENT_ALL
#define DUMP_COMPONENT_NONE
#define DUMP_COMPONENT_DEFINITION
void simple_ptr_list_append(SimplePtrList *list, void *ptr)
DumpComponents components
DumpableObjectType objType
DumpComponents dump_contains
SimplePtrList partattaches
struct _indxInfo * indexes
struct _tableInfo ** parents
struct _attrDefInfo ** attrdefs