Ошибка загрузки расширения на примере auto_explain

«Пост-Грэс-Кью-Эл» свободная объектно-реляционная СУБД. Обмениваемся вопросами и ответами о её работе.
Ответить
AntonS
Сообщения: 108
Зарегистрирован: Пт июн 03, 2022 8:51 am

Ошибка загрузки расширения на примере auto_explain

Сообщение AntonS »

Модуль auto_explain автоматически протоколирует планы выполнения медленных SQL-запросов в лог серевера, не требуя явного вызова команды EXPLAIN.

При этом на отдельных инсталляциях PostgreSQL, например из исходного кода, команда загрузки расширения auto_explain может не выполняться из-за ошибки:

Код: Выделить всё

demo=# LOAD 'auto_explain';
ERROR:  could not access file "auto_explain": No such file or directory
Аналогично, при добавлении в конфигурационный файл БД параметра:

Код: Выделить всё

session_preload_libraries = 'auto_explain'
Сервер базы данных не стартует, в логе сервера сообщение об ошибке:

Код: Выделить всё

FATAL:  could not access file "auto_explain": No such file or directory
Известно, что соответствующие файлы расширений должны устанавливаться в $pkglibdir — каталог, который выдаёт команда pg_config --pkglibdir

Код: Выделить всё

# pg_config --pkglibdir
/usr/local/pgsql/lib
Если скопировать в него расширение auto_explain:

Код: Выделить всё

# cd /usr/local/pgsql/lib
# cp /opt/postgresql-15.4/contrib/auto_explain/auto_explain.so .
То модуль auto_explain успешно загружается:

Код: Выделить всё

demo=# LOAD 'auto_explain';
LOAD
Поэтому для работы расширений, написанных на языке C, необходимо скопировать их файлы в $pkglibdir С другой стороны при инсталляции PostgreSQL из двоичных пакетов эти файлы копирует программа установки автоматически.
Ответить