diff options
author | Bruce Momjian <bruce@momjian.us> | 2012-01-24 22:42:37 -0500 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2012-01-24 22:42:37 -0500 |
commit | fa4dad6cc0fe7b66b2627ce7124a7767bfbaba63 (patch) | |
tree | 901897374aaf5cd9e45c4042a6a6e84cd8308254 | |
parent | e9cdb00ccdf3c4ef8706e801617bd4ed21907f5d (diff) |
In pg_upgrade, when checking for the plpython library, we must check for
"plpython2" when upgrading from pre-PG 9.1. Patch to head and 9.1.
Per report from Peter.
-rw-r--r-- | contrib/pg_upgrade/function.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/contrib/pg_upgrade/function.c b/contrib/pg_upgrade/function.c index 322014cd235..c5627111284 100644 --- a/contrib/pg_upgrade/function.c +++ b/contrib/pg_upgrade/function.c @@ -227,8 +227,24 @@ check_loadable_libraries(void) char *cmd = (char *) pg_malloc(8 + 2 * llen + 1); PGresult *res; + /* + * In Postgres 9.0, Python 3 support was added, and to do that, a + * plpython2u language was created with library name plpython2.so + * as a symbolic link to plpython.so. In Postgres 9.1, only the + * plpython2.so library was created, and both plpythonu and + * plpython2u pointing to it. For this reason, any reference to + * library name "plpython" in an old PG <= 9.1 cluster must look + * for "plpython2" in the new cluster. + */ + if (GET_MAJOR_VERSION(old_cluster.major_version) < 901 && + strcmp(lib, "$libdir/plpython") == 0) + { + lib = "$libdir/plpython2"; + llen = strlen(lib); + } + strcpy(cmd, "LOAD '"); - PQescapeStringConn(conn, cmd + 6, lib, llen, NULL); + PQescapeStringConn(conn, cmd + strlen(cmd), lib, llen, NULL); strcat(cmd, "'"); res = PQexec(conn, cmd); |