aboutsummaryrefslogtreecommitdiff
path: root/contrib/pg_upgrade/function.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2011-01-07 21:59:29 -0500
committerBruce Momjian <bruce@momjian.us>2011-01-07 21:59:29 -0500
commitd8d3d2a4f37f6df5d0118b7f5211978cca22091a (patch)
tree11299c3a356d18091724b3506c6e2b8ae9965a5d /contrib/pg_upgrade/function.c
parent2896c87ce4dc789722296f010eaefd5cbb86ece3 (diff)
downloadpostgresql-d8d3d2a4f37f6df5d0118b7f5211978cca22091a.tar.gz
postgresql-d8d3d2a4f37f6df5d0118b7f5211978cca22091a.zip
Fix pg_upgrade of large object permissions by preserving pg_auth.oid,
which is stored in pg_largeobject_metadata. No backpatch to 9.0 because you can't migrate from 9.0 to 9.0 with the same catversion (because of tablespace conflict), and a pre-9.0 migration to 9.0 has not large object permissions to migrate.
Diffstat (limited to 'contrib/pg_upgrade/function.c')
-rw-r--r--contrib/pg_upgrade/function.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/contrib/pg_upgrade/function.c b/contrib/pg_upgrade/function.c
index 9c8c5865d7b..1a66df295a0 100644
--- a/contrib/pg_upgrade/function.c
+++ b/contrib/pg_upgrade/function.c
@@ -13,23 +13,16 @@
/*
- * install_support_functions()
+ * install_db_support_functions()
*
* pg_upgrade requires some support functions that enable it to modify
* backend behavior.
*/
void
-install_support_functions(void)
+install_db_support_functions(const char *db_name)
{
- int dbnum;
-
- prep_status("Adding support functions to new cluster");
-
- for (dbnum = 0; dbnum < new_cluster.dbarr.ndbs; dbnum++)
- {
- DbInfo *new_db = &new_cluster.dbarr.dbs[dbnum];
- PGconn *conn = connectToServer(&new_cluster, new_db->db_name);
-
+ PGconn *conn = connectToServer(&new_cluster, db_name);
+
/* suppress NOTICE of dropped objects */
PQclear(executeQueryOrDie(conn,
"SET client_min_messages = warning;"));
@@ -83,9 +76,13 @@ install_support_functions(void)
"RETURNS VOID "
"AS '$libdir/pg_upgrade_support' "
"LANGUAGE C STRICT;"));
+ PQclear(executeQueryOrDie(conn,
+ "CREATE OR REPLACE FUNCTION "
+ " binary_upgrade.set_next_pg_authid_oid(OID) "
+ "RETURNS VOID "
+ "AS '$libdir/pg_upgrade_support' "
+ "LANGUAGE C STRICT;"));
PQfinish(conn);
- }
- check_ok();
}