On 9/26/20 7:49 AM, Tom Lane wrote:
=?utf-8?Q?Paul_F=C3=B6rster?= <paul.foerster@xxxxxxxxx> writes:
On 26. Sep, 2020, at 16:07, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
However, I don't understand how "drop extension plpythonu"
worked for you, given your previous query showing that
that extension wasn't installed.
just checked with another 12.4. It's the same:
postgres=# select * from pg_available_extension_versions where installed;
name | version | installed | superuser | relocatable | schema | requires | comment
---------+---------+-----------+-----------+-------------+------------+----------+--------------------------------------------------------------
plperlu | 1.0 | t | t | f | pg_catalog | | PL/PerlU untrusted procedural language
dblink | 1.2 | t | t | t | | | connect to other PostgreSQL databases from within a database
plpgsql | 1.0 | t | f | f | pg_catalog | | PL/pgSQL procedural language
plperl | 1.0 | t | f | f | pg_catalog | | PL/Perl procedural language
(4 rows)
postgres=# drop extension plpythonu ;
DROP EXTENSION
postgres=# create extension plpython3u ;
CREATE EXTENSION
Actually, now that I think about it, you're querying the wrong view.
I'm too lazy to check the source code right now, but I'm pretty sure
that pg_available_extension_versions is mostly driven off what control
files exist in the on-disk libdir. But that may have little to do with
what's in the system catalogs. You should have checked pg_extension,
or just "\dx" in psql.
I believe the issue is here:
select * from pg_pltemplate ;
plpythonu | f | f | plpython_call_handler |
plpython_inline_handler | plpython_validator | $libdir/plpython2 | NULL
plpython2u | f | f | plpython2_call_handler |
plpython2_inline_handler | plpython2_validator | $libdir/plpython2 | NULL
plpython3u | f | f | plpython3_call_handler |
plpython3_inline_handler | plpython3_validator | $libdir/plpython3 | NULL
The default plpython is plpythonu and that points at $libdir/plpython2.
The instructions here:
https://www.postgresql.org/docs/12/plpython-python23.html
offer a work around:
"Daredevils, who want to build a Python-3-only operating system
environment, can change the contents of pg_pltemplate to make plpythonu
be equivalent to plpython3u, keeping in mind that this would make their
installation incompatible with most of the rest of the world."
regards, tom lane
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx