0001-Fix-pg_dump-assertion-failure-when-dumping-pg_catalo.patch
text/x-patch
Filename: 0001-Fix-pg_dump-assertion-failure-when-dumping-pg_catalo.patch
Type: text/x-patch
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Fix pg_dump assertion failure when dumping pg_catalog.
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_dump.c | 25 | 8 |
From 2359f3244cc30bbc3353b8644e25879d8ae87c20 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Wed, 7 Jun 2023 10:32:52 -0700
Subject: [PATCH] Fix pg_dump assertion failure when dumping pg_catalog.
---
src/bin/pg_dump/pg_dump.c | 33 +++++++++++++++++++++++++--------
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 5dab1ba9ea..2a6a321609 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -13446,13 +13446,34 @@ dumpCollation(Archive *fout, const CollInfo *collinfo)
if (strcmp(PQgetvalue(res, 0, i_collisdeterministic), "f") == 0)
appendPQExpBufferStr(q, ", deterministic = false");
- if (colliculocale != NULL)
+ if (collprovider[0] == 'd')
{
+ Assert(colliculocale == NULL);
+ Assert(collicurules == NULL);
+ Assert(collcollate == NULL);
+ Assert(collctype == NULL);
+
+ /* no locale -- the default collation cannot be reloaded anyway */
+ }
+ else if (collprovider[0] == 'i')
+ {
+ Assert(colliculocale != NULL);
+ Assert(collcollate == NULL);
+ Assert(collctype == NULL);
+
appendPQExpBufferStr(q, ", locale = ");
appendStringLiteralAH(q, colliculocale, fout);
+
+ if (collicurules)
+ {
+ appendPQExpBufferStr(q, ", rules = ");
+ appendStringLiteralAH(q, collicurules, fout);
+ }
}
- else
+ else if (collprovider[0] == 'c')
{
+ Assert(colliculocale == NULL);
+ Assert(collicurules == NULL);
Assert(collcollate != NULL);
Assert(collctype != NULL);
@@ -13469,12 +13490,8 @@ dumpCollation(Archive *fout, const CollInfo *collinfo)
appendStringLiteralAH(q, collctype, fout);
}
}
-
- if (collicurules)
- {
- appendPQExpBufferStr(q, ", rules = ");
- appendStringLiteralAH(q, collicurules, fout);
- }
+ else
+ pg_fatal("unrecognized collation provider '%c'", collprovider[0]);
/*
* For binary upgrade, carry over the collation version. For normal
--
2.34.1