Hello, our production database has existed for quite a few years and been dumped/restored several times for hardware or postgresql upgrades. Original version was late 7 or early 8, we're currently on 8.4.2. I noticed on our production database I have two call handlers for plpgsql and for plpython; the following query:
select pn.nspname, pu0.usename as nspowner, pp.proname, pu1.usename as proowner, pp.prosrc, pp.probin from pg_proc pp, pg_namespace pn, pg_user pu0, pg_user pu1 where pp.proname like '%call_handler%' and pn.oid = pp.pronamespace and pu0.usesysid = pn.nspowner and pu1.usesysid = pp.proowner order by pp.proname; Produces this: nspname | nspowner | proname | proowner | prosrc | probin ------------+----------+-----------------------+----------+-----------------------+------------------ pg_catalog | postgres | plpgsql_call_handler | postgres | plpgsql_call_handler | $libdir/plpgsql public | postgres | plpgsql_call_handler | postgres | plpgsql_call_handler | $libdir/plpgsql pg_catalog | postgres | plpython_call_handler | postgres | plpython_call_handler | $libdir/plpython public | postgres | plpython_call_handler | postgres | plpython_call_handler | $libdir/plpython (4 rows) When I run this on a fresh database created on a fresh cluster like this: createdb --template=template1 krbtst createlang plpythonu krbtst I see this: nspname | nspowner | proname | proowner | prosrc | probin ------------+----------+-----------------------+----------+-----------------------+------------------ pg_catalog | postgres | plpgsql_call_handler | postgres | plpgsql_call_handler | $libdir/plpgsql pg_catalog | postgres | plpython_call_handler | postgres | plpython_call_handler | $libdir/plpython (2 rows) Should I worry about the extra rows in our production database? If so how should I go about cleaning them? -K
