Skip site navigation (1) Skip section navigation (2)

Re: BUG #5642: pg_upgrade does not handle shared libraries for language handlers

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: David Platt <davidplatt(at)davidplatt(dot)com>, pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5642: pg_upgrade does not handle shared libraries for language handlers
Date: 2010-09-08 02:10:54
Message-ID: 19813.1283911854@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugs
Bruce Momjian <bruce(at)momjian(dot)us> writes:
> David Platt wrote:
>> The following definition is my database:
>> 
>> CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
>> LANGUAGE c
>> AS '/opt/postgres/8.4.1/lib/plpgsql', 'plpgsql_call_handler';
>> 
>> The file /opt/postgres/9.rc1/lib/plpgsql.o exists but the pg_upgrade run
>> fails on an error loading /opt/postgres/8.4.1/lib/plpgsql.o.

> What is the error?  What old version of PG are you migrating from?

Well, it's obviously going to fail, because it will try to load an 8.4
version of plpgsql.so into 9.0.  The same would happen if you tried to
pg_dump and reload --- it's by no means the fault of pg_upgrade.

IMO this is just pilot error.  The call handler should never have been
declared like that, precisely because the definition will not port to
other releases or even other installation locations.  The right way for
the definition to look like is

	... AS '$libdir/plpgsql'

or perhaps even just

	... AS 'plpgsql'

if you'd like to rely on the dynamic_library_path setting.

I suspect David thinks that pg_upgrade should try to edit the library
path name, but IMO that would be seriously dangerous, as well as not
necessary if reasonable practices have been followed.

			regards, tom lane

In response to

Responses

pgsql-bugs by date

Next:From: Bruce MomjianDate: 2010-09-08 02:18:51
Subject: Re: BUG #5647: COPY TO does not respect the [standard_conforming_strings] setting
Previous:From: Bruce MomjianDate: 2010-09-08 01:53:43
Subject: Re: BUG #5642: pg_upgrade does not handle shared libraries for language handlers

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group