aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_dump/pg_dump_sort.c137
1 files changed, 93 insertions, 44 deletions
diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c
index f990b863942..022413812ea 100644
--- a/src/bin/pg_dump/pg_dump_sort.c
+++ b/src/bin/pg_dump/pg_dump_sort.c
@@ -39,52 +39,101 @@
* POST_DATA objects must sort after DO_POST_DATA_BOUNDARY, and DATA objects
* must sort between them.
*/
+
+/* This enum lists the priority levels in order */
+enum dbObjectTypePriorities
+{
+ PRIO_NAMESPACE = 1,
+ PRIO_PROCLANG,
+ PRIO_COLLATION,
+ PRIO_TRANSFORM,
+ PRIO_EXTENSION,
+ PRIO_TYPE, /* used for DO_TYPE and DO_SHELL_TYPE */
+ PRIO_FUNC,
+ PRIO_AGG,
+ PRIO_ACCESS_METHOD,
+ PRIO_OPERATOR,
+ PRIO_OPFAMILY, /* used for DO_OPFAMILY and DO_OPCLASS */
+ PRIO_CAST,
+ PRIO_CONVERSION,
+ PRIO_TSPARSER,
+ PRIO_TSTEMPLATE,
+ PRIO_TSDICT,
+ PRIO_TSCONFIG,
+ PRIO_FDW,
+ PRIO_FOREIGN_SERVER,
+ PRIO_TABLE,
+ PRIO_DUMMY_TYPE,
+ PRIO_ATTRDEF,
+ PRIO_BLOB,
+ PRIO_PRE_DATA_BOUNDARY, /* boundary! */
+ PRIO_TABLE_DATA,
+ PRIO_SEQUENCE_SET,
+ PRIO_BLOB_DATA,
+ PRIO_POST_DATA_BOUNDARY, /* boundary! */
+ PRIO_CONSTRAINT,
+ PRIO_INDEX,
+ PRIO_INDEX_ATTACH,
+ PRIO_STATSEXT,
+ PRIO_RULE,
+ PRIO_TRIGGER,
+ PRIO_FK_CONSTRAINT,
+ PRIO_POLICY,
+ PRIO_PUBLICATION,
+ PRIO_PUBLICATION_REL,
+ PRIO_SUBSCRIPTION,
+ PRIO_DEFAULT_ACL, /* done in ACL pass */
+ PRIO_EVENT_TRIGGER, /* must be next to last! */
+ PRIO_REFRESH_MATVIEW /* must be last! */
+};
+
+/* This table is indexed by enum DumpableObjectType */
static const int dbObjectTypePriority[] =
{
- 1, /* DO_NAMESPACE */
- 4, /* DO_EXTENSION */
- 5, /* DO_TYPE */
- 5, /* DO_SHELL_TYPE */
- 6, /* DO_FUNC */
- 7, /* DO_AGG */
- 8, /* DO_OPERATOR */
- 8, /* DO_ACCESS_METHOD */
- 9, /* DO_OPCLASS */
- 9, /* DO_OPFAMILY */
- 3, /* DO_COLLATION */
- 11, /* DO_CONVERSION */
- 18, /* DO_TABLE */
- 20, /* DO_ATTRDEF */
- 28, /* DO_INDEX */
- 29, /* DO_INDEX_ATTACH */
- 30, /* DO_STATSEXT */
- 31, /* DO_RULE */
- 32, /* DO_TRIGGER */
- 27, /* DO_CONSTRAINT */
- 33, /* DO_FK_CONSTRAINT */
- 2, /* DO_PROCLANG */
- 10, /* DO_CAST */
- 23, /* DO_TABLE_DATA */
- 24, /* DO_SEQUENCE_SET */
- 19, /* DO_DUMMY_TYPE */
- 12, /* DO_TSPARSER */
- 14, /* DO_TSDICT */
- 13, /* DO_TSTEMPLATE */
- 15, /* DO_TSCONFIG */
- 16, /* DO_FDW */
- 17, /* DO_FOREIGN_SERVER */
- 38, /* DO_DEFAULT_ACL --- done in ACL pass */
- 3, /* DO_TRANSFORM */
- 21, /* DO_BLOB */
- 25, /* DO_BLOB_DATA */
- 22, /* DO_PRE_DATA_BOUNDARY */
- 26, /* DO_POST_DATA_BOUNDARY */
- 39, /* DO_EVENT_TRIGGER --- next to last! */
- 40, /* DO_REFRESH_MATVIEW --- last! */
- 34, /* DO_POLICY */
- 35, /* DO_PUBLICATION */
- 36, /* DO_PUBLICATION_REL */
- 37 /* DO_SUBSCRIPTION */
+ PRIO_NAMESPACE, /* DO_NAMESPACE */
+ PRIO_EXTENSION, /* DO_EXTENSION */
+ PRIO_TYPE, /* DO_TYPE */
+ PRIO_TYPE, /* DO_SHELL_TYPE */
+ PRIO_FUNC, /* DO_FUNC */
+ PRIO_AGG, /* DO_AGG */
+ PRIO_OPERATOR, /* DO_OPERATOR */
+ PRIO_ACCESS_METHOD, /* DO_ACCESS_METHOD */
+ PRIO_OPFAMILY, /* DO_OPCLASS */
+ PRIO_OPFAMILY, /* DO_OPFAMILY */
+ PRIO_COLLATION, /* DO_COLLATION */
+ PRIO_CONVERSION, /* DO_CONVERSION */
+ PRIO_TABLE, /* DO_TABLE */
+ PRIO_ATTRDEF, /* DO_ATTRDEF */
+ PRIO_INDEX, /* DO_INDEX */
+ PRIO_INDEX_ATTACH, /* DO_INDEX_ATTACH */
+ PRIO_STATSEXT, /* DO_STATSEXT */
+ PRIO_RULE, /* DO_RULE */
+ PRIO_TRIGGER, /* DO_TRIGGER */
+ PRIO_CONSTRAINT, /* DO_CONSTRAINT */
+ PRIO_FK_CONSTRAINT, /* DO_FK_CONSTRAINT */
+ PRIO_PROCLANG, /* DO_PROCLANG */
+ PRIO_CAST, /* DO_CAST */
+ PRIO_TABLE_DATA, /* DO_TABLE_DATA */
+ PRIO_SEQUENCE_SET, /* DO_SEQUENCE_SET */
+ PRIO_DUMMY_TYPE, /* DO_DUMMY_TYPE */
+ PRIO_TSPARSER, /* DO_TSPARSER */
+ PRIO_TSDICT, /* DO_TSDICT */
+ PRIO_TSTEMPLATE, /* DO_TSTEMPLATE */
+ PRIO_TSCONFIG, /* DO_TSCONFIG */
+ PRIO_FDW, /* DO_FDW */
+ PRIO_FOREIGN_SERVER, /* DO_FOREIGN_SERVER */
+ PRIO_DEFAULT_ACL, /* DO_DEFAULT_ACL */
+ PRIO_TRANSFORM, /* DO_TRANSFORM */
+ PRIO_BLOB, /* DO_BLOB */
+ PRIO_BLOB_DATA, /* DO_BLOB_DATA */
+ PRIO_PRE_DATA_BOUNDARY, /* DO_PRE_DATA_BOUNDARY */
+ PRIO_POST_DATA_BOUNDARY, /* DO_POST_DATA_BOUNDARY */
+ PRIO_EVENT_TRIGGER, /* DO_EVENT_TRIGGER */
+ PRIO_REFRESH_MATVIEW, /* DO_REFRESH_MATVIEW */
+ PRIO_POLICY, /* DO_POLICY */
+ PRIO_PUBLICATION, /* DO_PUBLICATION */
+ PRIO_PUBLICATION_REL, /* DO_PUBLICATION_REL */
+ PRIO_SUBSCRIPTION /* DO_SUBSCRIPTION */
};
StaticAssertDecl(lengthof(dbObjectTypePriority) == (DO_SUBSCRIPTION + 1),