BUG #16178: DROP LANGUAGE plpythonu; doesn't actually drop language.

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #16178: DROP LANGUAGE plpythonu; doesn't actually drop language.
Дата
Msg-id 16178-d556fe3d69ee5271@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #16178: DROP LANGUAGE plpythonu; doesn't actually drop language.  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16178
Logged by:          Indrek Kalluste
Email address:      indreek@gmail.com
PostgreSQL version: 11.6
Operating system:   Ubuntu 18
Description:

If you run script:

CREATE SCHEMA IF NOT EXISTS moninfo_2ndq;
CREATE OR REPLACE LANGUAGE plpythonu;


CREATE TYPE moninfo_2ndq.mondata_int AS (name text, value bigint);

CREATE OR REPLACE FUNCTION moninfo_2ndq.pg_wal_info()
RETURNS SETOF moninfo_2ndq.mondata_int AS
$$
  import os

  filelist = os.listdir('pg_wal')
  yield 'PGSERVER.pg_xlog_files', len(filelist)

  dirsize = 0
  for filename in filelist:
    dirsize += os.path.getsize('pg_wal/'+filename)
  
  yield 'PGSERVER.pg_xlog_size', dirsize

$$ language plpythonu security definer;

select * from moninfo_2ndq.pg_wal_info();

---------------------
Exit postgres
---------------------

DROP SCHEMA IF EXISTS moninfo_2ndq CASCADE;
CREATE SCHEMA IF NOT EXISTS moninfo_2ndq;
CREATE TYPE moninfo_2ndq.mondata_int AS (name text, value bigint);

DROP LANGUAGE plpythonu;
CREATE EXTENSION plpython3u;

DROP FUNCTION IF EXISTS moninfo_2ndq.pg_wal_info();
CREATE OR REPLACE FUNCTION moninfo_2ndq.pg_wal_info()
    RETURNS SETOF moninfo_2ndq.mondata_int AS
$$
  import os

  if(os.path.exists('pg_xlog')):
    wal_dir = 'pg_xlog/'
  else:
    wal_dir = 'pg_wal/'

  filelist = os.listdir(wal_dir)

  yield 'PGSERVER.pg_wal_files', len(filelist)

  dirsize = 0
  for filename in filelist:
    dirsize += os.path.getsize(os.path.join(wal_dir,filename))

  yield 'PGSERVER.pg_wal_size', dirsize

$$ language plpython3u security definer;

select * from moninfo_2ndq.pg_wal_info();

#######
And try to run pg_upgrade check, it fails

/usr/lib/postgresql/12/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/11/main \
--new-datadir=/var/lib/postgresql/12/main \
--old-bindir=/usr/lib/postgresql/11/bin \
--new-bindir=/usr/lib/postgresql/12/bin \
--old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf' \
--check

I get error: 
could not load library "$libdir/plpython2": ERROR:  could not access file
"$libdir/plpython2": No such file or directory
Database: test

Doing the same thing with extensions works fine.


В списке pgsql-bugs по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: REINDEX CONCURRENTLY unexpectedly fails
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: PostgreSQL\12\bin\pg_ctl.exe - Trojan detected