Данные функции управляют различными деталями libpqповедение .
PQclientEncoding #Данная функция возвращает клиентскую кодировку.
int PQclientEncoding(const PGconn *объект conn);
Обратите внимание, что функция возвращает идентификатор кодировки, а не символьную строку, такую как EUC_JP. В случае ошибки функция возвращает -1.
Для преобразования идентификатора кодировки в её имя можно
использовать функцию:
char *pg_encoding_to_char(int encoding_id);
PQsetClientEncoding #Данная функция устанавливает клиентскую кодировку.
int PQsetClientEncoding(PGconn *объект conn, const char *encoding);
объект conn представляет собой соединение с сервером,
а encoding — это кодировка, которую требуется использовать. Если функция успешно устанавливает кодировку, она возвращает 0, в противном случае — -1. Текущую кодировку для данного соединения можно определить, используя функцию PQclientEncoding.
PQsetErrorVerbosity #
Определяет степень детализации сообщений, возвращаемых функцией
PQerrorMessage
и PQresultErrorMessage.
typedef enum
{
PQERRORS_TERSE,
PQERRORS_DEFAULT,
PQERRORS_VERBOSE,
PQERRORS_SQLSTATE
} PGVerbosity;
PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
PQsetErrorVerbosity устанавливает режим детализации,
возвращая предыдущее значение настройки соединения.
В TERSE режиме возвращаемые сообщения включают только
уровень серьезности, основной текст и позицию; обычно такие данные умещаются в одну строку. В DEFAULT режиме формируются сообщения, включающие вышеуказанные сведения, а также любые поля с подробностями, подсказками или контекстом (они могут занимать несколько строк). В VERBOSE режим включает все доступные поля. SQLSTATE
режим включает в себя только степень серьезности и SQLSTATE
код ошибки, если он доступен (в противном случае вывод будет таким же, как в режиме
TERSE mode).
Изменение настройки детализации не влияет на сообщения, полученные от уже существующих PGresult объекты, а только созданные впоследствии. (Однако см. PQresultVerboseErrorMessage если требуется вывести предыдущую ошибку с иным уровнем детализации.)
PQsetErrorContextVisibility #
Определяет способ обработки полей CONTEXT поля в сообщениях, возвращаемых
PQerrorMessage
и PQresultErrorMessage.
typedef enum
{
PQSHOW_CONTEXT_NEVER,
PQSHOW_CONTEXT_ERRORS,
PQSHOW_CONTEXT_ALWAYS
} PGContextVisibility;
PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context);
PQsetErrorContextVisibility устанавливает режим отображения контекста и возвращает предыдущее значение настройки соединения. Данный режим определяет, будет ли CONTEXT поле включено в сообщения. Параметр NEVER режим
никогда не включает CONTEXT, в то время как ALWAYS всегда
включает его при наличии. В ERRORS режиме (по
умолчанию), CONTEXT поля включаются только в сообщения об ошибках, а не в уведомления и предупреждения. (Однако если параметр детализации имеет значение TERSE
или SQLSTATE, CONTEXT поля
опускаются независимо от режима отображения контекста.)
Изменение этого режима не
влияет на сообщения, доступные из
уже существующих PGresult объекты, а только созданные впоследствии. (Однако см. PQresultVerboseErrorMessage если требуется
вывести текст предыдущей ошибки в другом режиме отображения.)
PQtrace #Включает трассировку взаимодействия между клиентом и сервером в поток отладочного файла.
void PQtrace(PGconn *conn, FILE *stream);
Каждая строка состоит из: необязательной метки времени, индикатора направления
(F для сообщений от клиента к серверу
или B для сообщений от сервера клиенту), длина сообщения, тип сообщения и содержимое сообщения. Поля, не относящиеся к содержимому сообщения (метка времени, направление, длина и тип сообщения), разделяются символом табуляции. Элементы содержимого сообщения разделяются пробелом. Строки протокола заключаются в двойные кавычки, тогда как строки, используемые в качестве значений данных, — в одинарные. Непечатные символы выводятся в виде шестнадцатеричных escape-последовательностей. Более подробные сведения о конкретных типах сообщений приведены в
Раздел 7.4.7.
В операционной системе Windows, если libpq библиотека и приложение
скомпилированы с разными флагами, вызов данной функции приведет к аварийному завершению
приложения, так как внутреннее представление FILE
указателей различается. В частности, флаги использования многопоточности (multithreaded/single-threaded),
типа сборки (release/debug) и типа компоновки (static/dynamic) должны быть идентичными для
библиотеки и всех использующих её приложений.
PQsetTraceFlags #Управляет поведением трассировки при взаимодействии клиента и сервера.
void PQsetTraceFlags(PGconn *conn, int flags);
flags содержит битовые флаги, описывающие режим работы
трассировки.
Если параметр flags содержит PQTRACE_SUPPRESS_TIMESTAMPS,
то метка времени не будет включаться при выводе сообщений.
Если параметр flags содержит PQTRACE_REGRESS_MODE, то при выводе сообщений некоторые поля будут скрыты (например, типы Oid объектов), чтобы сделать результат более удобным для использования в средах тестирования. Данную функцию необходимо вызывать после функции PQtrace.
PQuntrace #
Отключает трассировку, запущенную функцией PQtrace.
void PQuntrace(PGconn *conn);