Получить версию среды выполнения libpq (от libpqxx)

В справке по libpqxx я иногда могу прочитать информацию, которая ограничена базовой версией libpq («Требуется версия libpq из PostgreSQL 7.4 или выше».) как здесь.

Теперь вопросы: (1) Как получить версию libpq, используемую в текущей программе (используя libpqxx)? (2) Насколько я понял, libpqxx не обязательно нужно перекомпилировать при переходе к новой версии libpq. Замена старой libpq.dll охватывает (часто) новые технологии, такие как сжатие ssl в моем случае. Вот почему я думаю, что версия libpq должна быть получена во время выполнения.


person 550    schedule 20.04.2015    source источник


Ответы (1)


Версия libpq доступна во время выполнения с версии 9.1 через PQlibVersion:

int PQlibVersion (пусто);

Результат этой функции можно использовать для определения во время выполнения, доступны ли определенные функции в текущей загруженной версии libpq. Функцию можно использовать, например, чтобы определить, какие параметры подключения доступны для PQconnectdb или поддерживается ли вывод шестнадцатеричных байтов, добавленный в PostgreSQL 9.0.

Номер формируется путем преобразования основного, дополнительного номера и номера версии в двузначные числа и добавления их вместе. Например, версия 9.1 будет возвращена как 90100, а версия 9.1.2 будет возвращена как 90102 (начальные нули не показаны).

libpqxx, по-видимому, не инкапсулирует эту функциональность, поэтому нам нужно прорезать ее, чтобы добраться непосредственно до libpq.

person Daniel Vérité    schedule 20.04.2015
comment
Я не нашел ссылок на PQlibVersion в исходниках libpqxx. Спасибо за подсказку! Прямая ссылка на libpq поможет. Плохую часть этого можно найти под документом: Эта функция появилась в PostgreSQL версии 9.1, поэтому ее нельзя использовать для обнаружения необходимой функциональности в более ранних версиях, поскольку ссылка на нее создаст зависимость ссылки на версию 9.1.< /я> - person 550; 21.04.2015