powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Невозможен upgrade 9.5->9.6 из-за plpython
5 сообщений из 5, страница 1 из 1
Невозможен upgrade 9.5->9.6 из-за plpython
    #39490425
grgdvo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер для всякой рабочей информации. Одна из баз просто тестовая - для всякого рода экспериментов.
Когда-то в этой базе были эксперименты с python: create language / drop language (или create extension / drop extension.... уже не помню). Все функции уже давно дропнуты, но остались следы в pg_proc.

Код: sql
1.
2.
3.
4.
5.
6.
test=# select oid, proname, probin from pg_proc where probin like '%plpython%';
  oid  |         proname          |      probin       
-------+--------------------------+-------------------
 42809 | plpython2_call_handler   | $libdir/plpython2
 42810 | plpython2_inline_handler | $libdir/plpython2
 42811 | plpython2_validator      | $libdir/plpython2



В результате при штатном апгрейде через pg_upgrade, справедливо вылезает это

Код: sql
1.
2.
pg_upgrade_server.log:ОШИБКА:  нет доступа к файлу "$libdir/plpython2": Нет такого файла или каталога
pg_upgrade_server.log:ОПЕРАТОР:  LOAD '$libdir/plpython2'



Собственно вопрос простой, можно ли что-то с этим сделать?
Например, дропнуть из системного каталога, насколько это безопасно? Возможно я изначально упустил какую-то деталь при create/drop language и нужно воспроизвести историю??
Сейчас версии сервера уже пересобраны без поддержки python (дистрибутив gentoo).

Конечно, можно просто дропнуть всю базу test, но вопрос принципиальный, а если будет база, в которой это важно.

Спасибо
...
Рейтинг: 0 / 0
Невозможен upgrade 9.5->9.6 из-за plpython
    #39490555
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grgdvo,

А что говорит `\dx`, нет ли там каких "ненужных" расширений?
...
Рейтинг: 0 / 0
Невозможен upgrade 9.5->9.6 из-за plpython
    #39490665
Rutra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего язык вы создавали с помощью CREATE LANGUAGE. В документации пишется, что plpython нужно создавать с помощью CREATE EXTENSION ( CREATE LANGUAGE ):
авторAs of PostgreSQL 9.1, most procedural languages have been made into “extensions”, and should therefore be installed with CREATE EXTENSION not CREATE LANGUAGE. Direct use of CREATE LANGUAGE should now be confined to extension installation scripts. If you have a “bare” language in your database, perhaps as a result of an upgrade, you can convert it to an extension using CREATE EXTENSION langname FROM unpackaged.

Если plpython создавать с помощью CREATE LANGUAGE, то действительно почему-то данные процедуры не удаляются из pg_proc.
...
Рейтинг: 0 / 0
Невозможен upgrade 9.5->9.6 из-за plpython
    #39491234
grgdvo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

Было в \dL, я его дропнул. Сейчас вот так выглядит

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
test=# \dx
                               Список установленных расширений
    Имя    | Версия |   Схема    |                          Описание                          
-----------+--------+------------+------------------------------------------------------------
 plpgsql   | 1.0    | pg_catalog | PL/pgSQL procedural language
 tablefunc | 1.0    | public     | functions that manipulate whole tables, including crosstab
(2 строки)

test=# \dL
                         Список языков
   Имя   | Владелец | Доверенный |           Описание           
---------+----------+------------+------------------------------
 plpgsql | postgres | t          | PL/pgSQL procedural language
(1 строка)



Учитывая комментарий Rutra 20653306 , попробую воссоздать историю. Пересобиру с питоном, потом create extension и drop extension.
...
Рейтинг: 0 / 0
Невозможен upgrade 9.5->9.6 из-за plpython
    #39491266
grgdvo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже помогло пересоздание. Объясняю почему "похоже"
Сделал следующее.
1. Пересобрал версии PG (9.5 и 9.6) с поддержкой python2
для джентушников:
в package.use PYTHON_TARGETS: -* python2_7 PYTHON_SINGLE_TARGET: -* python2_7
eselect python set [здесь номер для версии python2]
2. На версии 9.5 (до апгрейда) createlang/droplang срабатывали успешно, но следы в pg_proc все равно оставались после дропа.
3. Пересобрал версии PG (9.5 и 9.6) с поддержкой python3
аналогично
в package.use PYTHON_TARGETS: -* python3_4 PYTHON_SINGLE_TARGET: -* python3_4
eselect python set [здесь номер для версии python3]
4. На версии 9.5 (до апгрейда) createlang/droplang срабатывали успешно, И СЛЕДЫ в pg_proc НЕ ОСТАВАЛИСЬ после дропа. Хотя я не создавал функций, ну и соответственно и следов не должно остаться.
5. Плюнул на следы, апгрейд надо было провести, вернулся к версиям PG с python2. Все прошло успешно, ибо модуль в наличии.
6. После pg_upgrade, рекомендуют к запуску скрипты analyze_new_cluster и потом delete_old_cluster. Все это сделал, и вуаля!! следов нет.

Вот по этому и говорю "похоже", потому что у меня два варианта трактовки полученного результата.
Либо pg_upgrade, не стал переносить то, чего на самом деле нет из старого кластера в новый.
Либо помог vacuum full, который в analyze_new_cluster, который подчистил "ненужное", перенесенное из старого кластера.

В любом случае всем спасибо, проблема с апгрейдом разрешилась успешно, все данные перенеслись в полном объеме.
В конце-концов остаюсь на версии с python3, авось пригодится для чего-нибудь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Невозможен upgrade 9.5->9.6 из-за plpython
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]