Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2 - Mailing list pgsql-bugs

From Adrian Klaver
Subject Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2
Date
Msg-id 4FC2773B.6050206@gmail.com
Whole thread Raw
In response to Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2  (Bruce Momjian <bruce@momjian.us>)
Responses Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2
Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2
List pgsql-bugs
On 05/26/2012 07:24 PM, Bruce Momjian wrote:
> On Sat, May 26, 2012 at 11:42:09PM +0000, adrian.klaver@gmail.com wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference:      6666
>> Logged by:          Adrian Klaver
>> Email address:      adrian.klaver@gmail.com
>> PostgreSQL version: 9.0.7
>> Operating system:   Linux/OpenSuse 12.1
>> Description:
>>

>>
>> I just tried an upgrade from 9.0.7 to 9.2beta1 using pg_upgrade. I ran it
>> first with -c and everything passed. When I did a live upgrade it failed
>> with this message in pg_upgrade_restore.log:
>>
>> CREATE FUNCTION plpython_call_handler() RETURNS language_handler
>>      LANGUAGE c
>>      AS '$libdir/plpython', 'plpython_call_handler';
>> psql:pg_upgrade_dump_db.sql:13541: ERROR:  could not access file
>> "$libdir/plpython": No such file or directory
>>
>> That is indeed true, there is no plpython, there is plpython2 instead. I
>> created a symlink plpython -->  plpython2 and the upgraded succeeded after a
>> re-initdb of the new cluster.
>
> It took me a little while to remember the cause of this problem, but I
> found it!
>
>      http://archives.postgresql.org/pgsql-hackers/2012-03/msg01101.php
>
> This was reported in March, 2012 --- please read the entire thread.  The
> problem is that you have a plpython_call_handler defined in the "public"
> schema, and it is being dumped out by pg_dumpall, rather than using a
> generic CREATE LANGUAGE statement.  Odds are this is left over from an
> older version of Postgres.

This particular database dates back to version 7.2, though plpythonu was not
added until version 8.0.x using the following:

CREATE PROCEDURAL LANGUAGE 'plpythonu'
  HANDLER plpython_call_handler;

Until now my procedure has been to do dump/restore to move from one major version to another.

>
> If you can help me find out how these got defined this way, I might be
> able to prevent this problem for the next person.
>

After reading the above thread here is what the queries mentioned return:

production=#  SELECT nspname,proname,probin FROM pg_proc,pg_namespace
WHERE probin LIKE '%python%' and pg_proc.pronamespace=pg_namespace.oid;

nspname   |         proname         |      probin
------------+-------------------------+------------------
 pg_catalog | plpython_call_handler   | $libdir/plpython
 pg_catalog | plpython_inline_handler | $libdir/plpython
 public     | plpython_call_handler   | $libdir/plpython
(3 rows)



production=# SELECT tableoid, oid, proname, prolang, pronargs, proargtypes,
prorettype, proacl, pronamespace, (SELECT rolname FROM pg_catalog.pg_roles WHERE
oid = proowner) AS rolname FROM pg_proc p WHERE NOT proisagg AND
(pronamespace != (SELECT oid FROM pg_namespace WHERE
nspname = 'pg_catalog'));
 tableoid | oid | proname | prolang | pronargs | proargtypes | prorettype | proacl | pronamespace | rolname
----------+-----+---------+---------+----------+-------------+------------+--------+--------------+---------
(0 rows)

If you need any more information let me know.

Thanks,

--
Adrian Klaver
adrian.klaver@gmail.com

pgsql-bugs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2
Next
From: Tom Lane
Date:
Subject: Re: BUG #6666: pg_upgrade 9.2beta1 plpython/plpython2