Параметры клиентских соединений по умолчанию

Поведение команд

client_min_messages (enum)

Управляет уровнем сообщений, отправляемых клиенту. Допустимые значения: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING и ERROR. Каждый из перечисленных уровней включает в себя все уровни, идущие после него. Чем дальше в этом списке уровень сообщения, тем меньше сообщений отправляется клиенту. Значение по умолчанию — NOTICE. Обратите внимание, что здесь у LOG другая позиция, нежели в параметре log_min_messages.

Сообщения уровня INFO отправляются клиенту всегда.

search_path (string)

Эта переменная задает порядок, в котором просматриваются схемы, когда к объекту поиска (таблице, типу данных, функцию и т. д.) обращаются просто по имени, без указания схемы. Если объекты с одинаковыми именами находятся в разных схемах, используется тот, который был найден первым в пути поиска. На объект, который не входит ни в одну из схем в пути поиска, можно обратиться только по полному имени (с точкой), с указанием содержащей его схемы.

Значением search_path должен быть список имен схем, разделенных запятыми. Любое имя, которое не соответствует существующей схеме или принадлежит схеме, для которой у пользователя нет права USAGE, молча игнорируется.

Если список содержит специальное имя $user, то вместо него подставляется схема с именем, возвращаемым функцией CURRENT_USER, если такая схема существует и у пользователя есть для нее право USAGE. (В противном случае имя $user игнорируется).

Схема системных каталогов, pg_catalog, просматривается всегда, независимо от того, упоминается она в пути или нет. Если ее имя указано в пути, она будет просматриваться в заданном порядке. Если pg_catalog в пути отсутствует, она будет просматриваться перед всеми остальными элементами пути.

Аналогично всегда просматривается схема временных таблиц текущего сеанса, pg_temp_nnn, если она существует. Ее можно явно указать в пути поиска с помощью псевдонима pg_temp. Если эта схема в пути отсутствует, она будет просматриваться первой (даже до pg_catalog). Однако во временной схеме производится только поиск отношений (таблиц, представлений, последовательностей и т. д.) и типов данных, но не функций или операторов.

Когда объекты создаются без указания конкретной целевой схемы, они помещаются в первую подходящую схему, указанную в search_path. Если путь поиска пуст, выдается ошибка.

Значение по умолчанию для этого параметра — "$user", public. При таком значении поддерживается совместное использование базы данных (когда пользователи не имеют личных схем и все используют схему public), использование личных схем и комбинации обоих вариантов. Другие результаты можно получить, изменяя значение пути поиска по умолчанию, либо глобально, либо отдельно для каждого пользователя.

Дополнительную информацию об обработке схем см. в разделе Схемы. В частности, конфигурация схем по умолчанию подходит только для баз данных с одним пользователем или несколькими доверяющими друг другу пользователями.

Текущее действующее значение пути поиска можно проверить с помощью функции SQL current_schemas (см. раздел Системные информационные функции и операторы). Результат будет несколько отличаться от значения в search_path, поскольку current_schemas показывает, как были преобразованы элементы, находящиеся в search_path.

row_security (boolean)

Эта переменная определяет, будет ли выдаваться ошибка при применении политики защиты строк. При значении on (включен) политики применяются в обычном режиме. При значении off (выключен) запросы, ограниченные хотя бы одной политикой, будут выдавать ошибку. Значение по умолчанию — on. Задавать значение off имеет смысл, когда ограниченная видимость строки может привести к некорректным результатам; например, qhb_dump задает это значение по умолчанию. Эта переменная не влияет на роли, которые обходят все политики защиты строк, а именно, на суперпользователей и роли с атрибутом BYPASSRLS.

Дополнительную информацию о политиках защиты строк см. на справочной странице команды CREATE POLICY.

default_table_access_method (string)

Этот параметр задает табличный метод доступа по умолчанию, который используется при создании таблиц или материализованных представлений, если тот не указан явно в команде CREATE, либо при выполнении команды SELECT ... INTO, которая не позволяет явно задать метод доступа. Значение по умолчанию — heap.

default_tablespace (string)

Эта переменная задает табличное пространство по умолчанию, в котором будут создаваться объекты (таблицы и индексы), когда в команде CREATE табличное пространство не указано явно.

Ее значением является либо имя табличного пространства, либо пустая строка, подразумевающая использование табличного пространства по умолчанию для текущей базы данных. Если это значение не соответствует имени какого-либо существующего табличного пространства, QHB автоматически будет использовать табличное пространство по умолчанию для текущей базы данных. Если указано не табличное пространство по умолчанию, у пользователя должно быть право CREATE для него, иначе попытки создания объектов не увенчаются успехом.

Эта переменная не используется для временных таблиц; вместо этого для них используется temp_tablespaces.

Кроме того, эта переменная не используется при создании баз данных. По умолчанию новая база данных наследует настройки по выбору табличного пространства от базы- шаблона, из которой она копируется.

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

Дополнительную информацию о табличных пространствах см. в разделе Табличные пространства.

default_toast_compression (enum)

Эта переменная задает метод сжатия TOAST по умолчанию для значений сжимаемых столбцов. (Это можно переопределить для отдельных столбцов, установив параметр столбца COMPRESSION в CREATE TABLE или ALTER TABLE.) Поддерживаемые методы сжатия: pglz и lz4 (если QHB была скомпилирована с параметром --with-lz4). Значение по умолчанию — pglz.

temp_tablespaces (string)

Эта переменная задает табличные пространства, в которых будут создаваться временные объекты (временные таблицы и индексы для временных таблиц), когда в команде CREATE табличное пространство не указано явно. Также в этих табличных пространствах создаются временные файлы для таких целей, как сортировка больших наборов данных.

Ее значением является список имен табличных пространств. Когда в этом списке содержится более одного имени, QHB выбирает оттуда случайный элемент каждый раз при создании временного объекта; однако последующие создаваемые внутри транзакции временные объекты помещаются в табличные пространства, выбираемые из списка последовательно. Если выбранный элемент списка представляет собой пустую строку, QHB автоматически будет использовать табличное пространство по умолчанию для текущей базы данных.

Когда temp_tablespaces задается интерактивно, указание несуществующего табличного пространства является ошибкой, равно как и указание табличного пространства, для которого у пользователя нет права CREATE. Однако при использовании значения, заданного ранее, несуществующие табличные пространства и табличные пространства, для которых у пользователя нет права CREATE, игнорируются. В частности, это правило применяется в отношении значения, заданного в qhb.conf.

Значение по умолчанию — пустая строка, поэтому все временные объекты создаются в табличном пространстве по умолчанию текущей базы данных.

См. также default_tablespace.

check_function_bodies (boolean)

Обычно этот параметр включен. Если задать значение off (выключен), выключается проверка строки с телом функции во время выполнения команд CREATE FUNCTION и CREATE PROCEDURE. Выключение проверки позволяет избежать побочных эффектов процесса проверки, в частности, избежать ложных срабатываний из-за таких проблем, как ссылки вперед. Перед загрузкой функций от имени других пользователей этому параметру нужно присваивать значение off ; qhb_dump делает это автоматически.

default_transaction_isolation (enum)

Для каждой транзакции в SQL устанавливается один из следующих уровней изоляции: «read uncommitted», «read committed», «repeatable read» или «serializable». Этот параметр определяет уровень изоляции, который будет устанавливаться по умолчанию для новых транзакций. Значение по умолчанию — «read committed».

Дополнительную информацию см. в главе Параллельный контроль и на справочной странице команды SET TRANSACTION.

default_transaction_read_only (boolean)

Транзакция SQL в режиме «только чтение» не может изменять временные таблицы. Этот параметр определяет, будут ли новые транзакции иметь по умолчанию статус «только чтение». Значение по умолчанию — off (разрешено чтение/запись).

Дополнительную информацию см. на справочной странице команды SET TRANSACTION.

default_transaction_deferrable (boolean)

Откладываемая транзакция SQL в режиме «только чтение», выполняющаяся на уровне изоляции serializable, может быть задержана, прежде чем ей будет разрешено возобновить работу. Однако как только она начнет выполняться, для обеспечения сериализуемости не потребуется никаких дополнительных затрат, поэтому у кода сериализации не будет причин прерывать ее из-за параллельных изменений. Как следствие, эта особенность подходит для длительных транзакций в режиме «только чтение».

Этот параметр определяет, будут ли новые транзакции по умолчанию откладываемыми. В настоящее время он не влияет на транзакции в режиме «чтение/запись» или с уровнем изоляции ниже serializable. Значение по умолчанию — off (выключен).

Дополнительную информацию см. на справочной странице команды SET TRANSACTION.

transaction_isolation (enum)

Данный параметр отражает уровень изоляции текущей транзакции. В начале каждой транзакции ему присваивается текущее значение default_transaction_isolation. Последующая попытка изменить значение этого параметра равнозначна команде SET TRANSACTION.

transaction_read_only (boolean)

Данный параметр отражает статус режима «только чтение» для текущей транзакции. В начале каждой транзакции ему присваивается текущее значение default_transaction_read_only. Последующая попытка изменить значение этого параметра равнозначна команде SET TRANSACTION.

transaction_deferrable (boolean)

Данный параметр отражает статус «откладываемости» для текущей транзакции. В начале каждой транзакции ему присваивается текущее значение default_transaction_deferrable. Последующая попытка изменить значение этого параметра равнозначна команде SET TRANSACTION.

session_replication_role (enum)

Управляет срабатыванием связанных с репликацией триггеров и правил в текущем сеансе. Установка этой переменной требует наличия прав суперпользователя и приводит к сбросу всех ранее кэшированных планов запросов. Ее допустимые значения: origin (по умолчанию), replica и local.

Предполагается, что системы логической репликации будут устанавливать для этого параметра значение replica, применяя реплицированные изменения. В результате триггеры и правила (у которых не менялась конфигурация по умолчанию) не будут срабатывать в репликах. Дополнительную информацию см. в описании предложений ENABLE TRIGGER и ENABLE RULE команды ALTER TABLE.

Внутри QHB значения origin и local воспринимаются как равнозначные. Сторонние системы репликации могут использовать эти два значения для своих внутренних целей, например, обозначая с помощью local сеанс, изменения в котором не должны реплицироваться.

Поскольку внешние ключи реализованы в виде триггеров, присвоение этому параметру значения replica также выключает все проверки внешних ключей, что может привести к нарушению согласованности данных в случае неправильного использования.

statement_timeout (integer)

Прерывать любую команду, выполняющуюся дольше заданного в этом параметре времени. Если в log_min_error_statement установлено значение ERROR или ниже, команда, прервавшаяся по времени, также будет записана в журнал. Если это значение указано без единиц измерения, оно считается заданным в миллисекундах. При нулевом значении (по умолчанию) это прерывание по времени выключается.

Время ожидания отсчитывается с момента поступления команды на сервер до завершения ее выполнения. Если в одном сообщении простого запроса находятся несколько операторов SQL, тайм-аут применяется к каждому из них по отдельности. В расширенном протоколе запросов время ожидания начинает отсчет с момента поступления любого сообщения, связанного с запросом (разбор, связывание, выполнение, описание), и обнуляется по завершению обработки сообщения о выполнении или синхронизации.

Задавать значение statement_timeout в qhb.conf не рекомендуется, поскольку это повлияет на все сеансы.

lock_timeout (integer)

Прерывать любую команду, которая при получении блокировки таблицы, индекса, строки или другого объекта базы данных ожидает дольше заданного в этом параметре времени. Это ограничение по времени применяется к каждой попытке получения блокировки по отдельности. Ограничение применяется как к явным запросам блокировки (например к LOCK TABLE или SELECT FOR UPDATE без NOWAIT), так и к блокировкам, получаемым неявно. Если это значение указано без единиц измерения, оно считается заданным в миллисекундах. При нулевом значении (по умолчанию) это прерывание по времени выключается.

В отличие от statement_timeout, это прерывание по времени может происходить только при ожидании блокировок. Обратите внимание, что при ненулевом значении statement_timeout бессмысленно устанавливать для lock_timeout такое же или большее значение, поскольку прерывание по времени для команды всегда срабатывает первым. Если в log_min_error_statement установлено значение ERROR или ниже, команда, прервавшаяся по времени, будет записана в журнал.

Задавать значение lock_timeout в qhb.conf не рекомендуется, поскольку это повлияет на все сеансы.

idle_in_transaction_session_timeout (integer)

Завершать любой сеанс, простаивающий (то есть ожидающий запрос от клиента), дольше заданного времени, в открытой транзакции. Если это значение указано без единиц измерения, оно считается заданным в миллисекундах. При нулевом значении (по умолчанию) это завершение по времени выключается.

Этот параметр можно использовать для предотвращения ситуаций, когда простаивающие сеансы чересчур долго удерживают блокировки. Даже если удерживаются незначимые блокировки, открытая транзакция препятствует очистке недавно ставших неиспользуемыми кортежей, которые могут быть видимыми только для этой транзакции; поэтому длительный простой может привести к разбуханию таблиц. Более подробную информацию см. в разделе Регулярная очистка.

idle_session_timeout (integer)

Завершать любой сеанс, простаивающий (то есть ожидающий запрос от клиента), дольше заданного времени, но вне открытой транзакции. Если это значение указано без единиц измерения, оно считается заданным в миллисекундах. При нулевом значении (по умолчанию) это завершение по времени выключается.

В отличие от ситуации с открытой транзакцией, сеанс, простаивающий вне транзакции, не вызывает значительных издержек на сервере, поэтому необходимость во включении этого тайм-аута возникает реже, чем idle_in_transaction_session_timeout.

Включать этот тайм-аут для подключений, устанавливаемых через программу пула соединений или другое ПО промежуточного слоя, следует с осторожностью, поскольку такой слой может некорректно реагировать на неожиданное закрытие соединений. Может иметь смысл включать этот тайм-аут только для интерактивных сеансов, возможно, применяя его только у определенных пользователей.

vacuum_freeze_table_age (integer)

Если поле pg_class.relfrozenxid таблицы достигает возраста, заданного в этом параметре, VACUUM будет выполнять агрессивное сканирование. Агрессивное сканирование отличается от обычного выполнения VACUUM тем, что проводится на каждой странице, которая может содержать незамороженные XID или MXID, а не только на тех, которые могут содержать неиспользуемые кортежи. Значение по умолчанию — 150 миллионов транзакций. Хотя пользователи могут задать любое значение в диапазоне от нуля до двух миллиардов, VACUUM будет молча ограничивать действующее значение до предела, равного 95% от autovacuum_freeze_max_age, чтобы периодически запускаемая вручную команда VACUUM имела шанс выполниться до того, как для таблицы будет запущена автоочистка для предотвращения зацикливания. Дополнительную информацию см. в подразделе Предотвращение ошибок зацикливания идентификаторов транзакций.

vacuum_freeze_min_age (integer)

Задает возрастную границу (в транзакциях), которая должна использоваться в команде VACUUM при принятии решения о заморозке версий строк в процессе сканирования таблицы. Значение по умолчанию — 50 миллионов транзакций. Хотя пользователи могут задать любое значение в диапазоне от нуля до одного миллиарда, VACUUM будет молча ограничивать действующее значение до предела, равного половине значения autovacuum_freeze_max_age, чтобы перерывы между принудительными автоочистками не были неоправданно короткими. Дополнительную информацию см. в подразделе Предотвращение ошибок зацикливания идентификаторов транзакций.

vacuum_failsafe_age (integer)

Задает максимальный возраст (в транзакциях), которого может достичь поле pg_class.relfrozenxid некоторой таблицы, прежде чем VACUUM примет чрезвычайные меры во избежание глобального системного сбоя из-за зацикливания идентификатора транзакций. Это стратегия применяется VACUUM в случае крайней необходимости. Обычно защитный режим запускается, когда автоматическая очистка для предотвращения зацикливания идентификатора транзакций уже выполнялась в течение некоторого времени, хотя может запуститься во время любой операции VACUUM.

При запуске защитного режима любая действующая задержка на основе стоимости больше не применяется, а дальнейшие несущественные задачи обслуживания (например очистка индекса) пропускаются.

Значение по умолчанию — 1.6 миллиарда транзакций. Хотя пользователи могут установить любое значение от нуля до 2.1 миллиарда, VACUUM молча поправит действующее значение, задав как минимум 105% от autovacuum_freeze_max_age.

vacuum_multixact_freeze_table_age (integer)

Если поле pg_class.relminmxid некоторой таблицы достигает возраста, заданного в этом параметре, VACUUM будет выполнять агрессивное сканирование. Агрессивное сканирование отличается от обычного выполнения VACUUM тем, что проводится на каждой странице, которая может содержать незамороженные XID или MXID, а не только на тех, которые могут содержать неиспользуемые кортежи. Значение по умолчанию — 150 миллионов транзакций. Хотя пользователи могут задать любое значение в диапазоне от нуля до двух миллиардов, VACUUM будет молча ограничивать действующее значение до предела, равного 95% от autovacuum_multixact_freeze_max_age, чтобы периодически запускаемая вручную команда VACUUM имела шанс выполниться до того, как для таблицы будет запущена автоматическая очистка для предотвращения зацикливания. Дополнительную информацию см. в подразделе Мультитранзакции и зацикливание.

vacuum_multixact_freeze_min_age (integer)

Задает возрастную границу (в мультитранзакциях), которая должна использоваться в команде VACUUM при принятии решения о замене идентификатора мультитранзакции более новым идентификатором транзакции или мультитранзакции в процессе сканирования таблицы. Значение по умолчанию — 5 миллионов мультитранзакций. Хотя пользователи могут задать любое значение в диапазоне от нуля до одного миллиарда, VACUUM будет молча ограничивать действующее значение до предела, равного половине значения autovacuum_multixact_freeze_max_age, чтобы перерывы между принудительными автоочистками не были неоправданно короткими. Дополнительную информацию см. в подразделе Мультитранзакции и зацикливание.

vacuum_multixact_failsafe_age (integer)

Задает максимальный возраст (в мультитранзакциях), которого может достичь поле pg_class.relfrozenxid некоторой таблицы, прежде чем VACUUM примет чрезвычайные меры во избежание глобального системного сбоя из-за зацикливания идентификатора мультитранзакций. Это стратегия применяется VACUUM в случае крайней необходимости. Обычно защитный режим запускается, когда автоматическая очистка для предотвращения зацикливания идентификатора транзакций уже выполнялась в течение некоторого времени, хотя может запуститься во время любой операции VACUUM.

При запуске защитного режима любая действующая задержка на основе стоимости больше не применяется, а дальнейшие несущественные задачи обслуживания (например очистка индекса) пропускаются.

Значение по умолчанию — 1.6 миллиарда мультитранзакций. Хотя пользователи могут установить любое значение от нуля до 2.1 миллиарда, VACUUM молча поправит действующее значение, задав как минимум 105% от autovacuum_multixact_freeze_max_age.

bytea_output (enum)

Устанавливает формат вывода для значений типа bytea. Допустимые значения: hex (по умолчанию) и escape (традиционный формат QHB). Дополнительную информацию см. в разделе Двоичные типы данных. На входе данные типа bytea всегда воспринимаются в обоих форматах, независимо от этого параметра.

xmlbinary (enum)

Устанавливает способ кодирования двоичных значений в XML. Это применимо, например, когда значения типа bytea конвертируются в XML с помощью функций xmlelement или xmlforest. Допустимые значения, определенные в стандарте XML-схем: base64 и hex. Значение по умолчанию — base64. Дополнительную информацию о функциях для работы с XML, см. в разделе Функции XML.

Фактический выбор здесь в основном дело вкуса, ограничения могут накладываться только клиентскими приложениями. Оба метода поддерживают все возможные значения, хотя в шестнадцатеричной кодировке результат будет несколько объемнее, чем в кодировке base64.

xmloption (enum)

Устанавливает подразумеваемый по умолчанию режим преобразования между значениями XML и символьными строками. Описание этого преобразования см. в разделе Тип XML. Допустимые значения: DOCUMENT и CONTENT. Значение по умолчанию — CONTENT.

Согласно стандарту SQL этот параметр задается командой

SET XML OPTION { DOCUMENT | CONTENT };

Этот синтаксис также поддерживается в QHB.

gin_pending_list_limit (integer)

Устанавливает максимальный размер очереди записей индекса GIN, который используется, когда включен режим fastupdate. Если размер очереди превышает этот предел, она очищается путем массового переноса записей в основную структуру данных индекса GIN. Если это значение указано без единиц измерения, оно считается заданным в килобайтах. Значение по умолчанию — четыре мегабайта (4MB). Этот параметр можно переопределить для отдельных индексов GIN, изменив их параметры хранения. Дополнительную информацию см. в подразделе Методика быстрого обновления GIN и разделе Советы и приемы для индексов GIN.


Языковые стандарты и форматирование

DateStyle (string)

Устанавливает формат отображения значений даты и времени, а также правила интерпретации неоднозначных значений вводимых дат. По историческим причинам эта переменная содержит два независимых компонента: спецификацию выходного формата (ISO, Postgres, SQL или German) и спецификацию, касающуюся порядка год(Y)/ месяц(M)/день(D) при вводе/выводе (DMY, MDY или YMD). Эти компоненты можно задавать вместе или по отдельности. Ключевые слова Euro и European являются синонимами для DMY; ключевые слова US, NonEuro и NonEuropean являются синонимами для MDY. Дополнительную информацию см. в разделе Типы даты/времени. Встроенное значение по умолчанию — ISO, MDY, но qhb_bootstrap (или initdb) инициализирует файл конфигурации со значением, соответствующим поведению выбранной локали lc_time.

IntervalStyle (enum)

Устанавливает формат отображения для значений интервалов. В формате sql_standard интервал будет выводиться в виде, соответствующем стандарту SQL (+Y-M +D +H:MM:SS). В формате postgres (используемом по умолчанию) интервал будет выводиться в виде Y years M mons D days HH:MM:SS. В формате postgres_verbose интервал будет выводиться в виде @ Y years M mons D days H hours M mins S secs. В формате iso_8601 интервал будет выводиться в виде, соответствующем временному интервалу «формат с кодами», определенному в разделе 4.4.3.2 стандарта ISO 8601.

Параметр IntervalStyle также влияет на интерпретацию неоднозначных вводимых интервалов. Дополнительную информацию см. в подразделе Ввод интервалов.

TimeZone (string)

Устанавливает часовой пояс для отображения и интерпретации меток времени. Встроенное значение по умолчанию — GMT, но обычно оно переопределяется в qhb.conf; qhb_bootstrap (или initdb) установит в нем значение, соответствующее системному окружению. Дополнительную информацию см. в подразделе Часовые пояса.

timezone_abbreviations (string)

Устанавливает набор сокращений часовых поясов, которые будут приниматься сервером при вводе даты и времени. Значение по умолчанию — 'Default', которое представляет собой набор сокращений, принятых в большинстве стран мира; также допускаются значения 'Australia' и 'India'. Кроме того, для конкретной установки можно определить и другие наборы. Дополнительную информацию см. в разделе Файлы конфигурации даты/времени.

extra_float_digits (integer)

Этот параметр корректирует количество цифр, используемых для текстового вывода чисел с плавающей запятой, включая значения типов float4, float8, а также геометрических типов.

При значении 1 (по умолчанию) или выше числа с плавающей запятой выводятся в кратчайшем точном формате; см. подраздел Типы с плавающей запятой. Фактическое количество генерируемых цифр зависит только от выводимого числа, а не от значения этого параметра. Для чисел типа float8 требуется не более 17 цифр, а для чисел типа float4 — не более 9. Этот формат является и быстрым, и точным, при правильном прочтении в точности сохраняя исходное двоичное число с плавающей запятой. В целях исторической совместимости этот параметр принимает значения до 3 включительно.

Если его значение равно нулю или отрицательно, то выводимое число округляется до заданной десятичной точности. Применяемая точность определяется как стандартное количество цифр для типа (FLT_DIG или DBL_DIG, в зависимости от ситуации), уменьшенное на значение этого параметра. (Например, при значении -1 числа типа float4 будут выводиться округленными до 5 значащих цифр, а числа типа float8 — до 14). Преобразование в этот формат происходит медленнее и не сохраняет все биты двоичного числа с плавающей запятой, но может быть более удобным для восприятия человеком. Дополнительную информацию о поведении этого параметра см. в подразделе Типы с плавающей запятой.

client_encoding (string)

Устанавливает кодировку (набор символов) на стороне клиента. По умолчанию используется кодировка базы данных. Наборы символов, поддерживаемые сервером QHB, описаны в подразделе Поддерживаемые кодировки.

lc_messages (string)

Устанавливает язык, на котором отображаются сообщения. Допустимые значения зависят от системы; дополнительную информацию см. в разделе Поддержка языковых стандартов. Если для этой переменной задана пустая строка (по умолчанию), то значение наследуется от среды выполнения сервера системно-зависимым способом.

В некоторых системах эта категория локали отсутствует. Эту переменную все равно можно задать, но действовать она не будет. Кроме того, есть вероятность, что переведенных сообщений на заданном языке не существует. В этом случае сообщения по-прежнему будут отображаться на английском.

Этот параметр могут изменять только суперпользователи, поскольку он влияет как на сообщения, отправляемые в журнал сервера, так и на те, которые передаются клиенту, и неподходящее значение может снизить удобочитаемость журналов сервера.

lc_monetary (string)

Устанавливает локаль для форматирования денежных сумм, например, с использованием функций семейства to_char. Допустимые значения зависят от системы; дополнительную информацию см. в разделе Поддержка языковых стандартов. Если для этой переменной задана пустая строка (по умолчанию), то значение наследуется от среды выполнения сервера системно-зависимым способом.

lc_numeric (string)

Устанавливает локаль для форматирования чисел, например, с использованием функций семейства to_char. Допустимые значения зависят от системы; дополнительную информацию см. в разделе Поддержка языковых стандартов. Если для этой переменной задана пустая строка (по умолчанию), то значение наследуется от среды выполнения сервера системно-зависимым способом.

lc_time (string)

Устанавливает локаль для форматирования даты и времени, например, с использованием функций семейства to_char. Допустимые значения зависят от системы; дополнительную информацию см. в разделе Поддержка языковых стандартов. Если для этой переменной задана пустая строка (по умолчанию), то значение наследуется от среды выполнения сервера системно-зависимым способом.

default_text_search_config (string)

Выбирает конфигурацию текстового поиска, которая будет использоваться вариантами функций текстового поиска, не имеющими аргумента, явно задающего конфигурацию. Дополнительную информацию см. в главе Полнотекстовый поиск. Встроенное значение по умолчанию — pg_catalog.simple, но qhb_bootstrap (или initdb) инициализирует файл конфигурации со значением, соответствующим выбранной локали lc_ctype, если получится определить ее конфигурацию.


Предварительная загрузка разделяемых библиотек

Для настройки предварительной загрузки на сервер разделяемых библиотек доступно несколько параметров, позволяющих подключить дополнительные функции или повысить производительность. Например, при значении ’$libdir/mylib’ в память будет загружена mylib.so (или на некоторых платформах mylib.sl) из стандартного каталога библиотек данной установки. Различия между этими параметрами заключаются в том, когда они вступают в силу и какие права требуются для их изменения.

Таким образом можно предварительно загрузить библиотеки на процедурных языках QHB, обычно используя синтаксис '$libdir/plXXX' где XXX — это имя языка: pgsql, perl, tcl или python.

Только разделяемые библиотеки, предназначенные специально для использования с QHB, могут быть загружены таким образом. Каждая библиотека, поддерживаемая QHB, имеет «магический блок», который проверяется на совместимость. Поэтому загрузить таким способом библиотеки не для QHB нельзя. Для этого можно воспользоваться средствами операционной системы, например LD_PRELOAD.

В целом, чтобы узнать рекомендуемый способ загрузки конкретного модуля, следует обратиться к документации этого модуля.

local_preload_libraries (string)

Эта переменная задает одну или несколько разделяемых библиотек, которые будут предварительно загружаться при установке соединения. Она содержит разделенный запятыми список имен библиотек, где каждое имя должно восприниматься командой LOAD. Пробелы между именами игнорируются; если требуется включить в имя пробелы или запятые, заключите его в кавычки. Заданное значение этого параметра действует только в начале соединения. Последующие изменения ни на что не влияют. Если указанная в списке библиотека не найдена, попытка подключения завершится неудачно.

Этот параметр может задать любой пользователь. Из-за этого загружать можно только библиотеки, находящиеся в подкаталоге plugins стандартного каталога библиотек данной установки. (Ответственность за то, чтобы там находились только «безопасные» библиотеки, несет администратор.) В local_preload_libraries этот каталог можно задать явно (например $libdir/plugins/mylib), или просто задать имя библиотеки — mylib (оно будет воспринято как $libdir/plugins/mylib).

Цель этого механизма — позволить пользователям, не имеющим специальных прав, загружать отладочные библиотеки или библиотеки для оценки производительности в конкретные сеансы, обходясь без явной команды LOAD. Для этой цели данный параметр обычно устанавливается в переменной среды PGOPTIONS на клиенте или с помощью команды ALTER ROLE SET.

Однако обычно этот параметр не следует использовать, если только модуль не предназначен специально для такой загрузки обычными пользователями. В качестве альтернативы рекомендуется рассмотреть session_preload_libraries (см. ниже).

session_preload_libraries (string)

Эта переменная задает одну или несколько разделяемых библиотек, которые будут предварительно загружаться при установке соединения. Она содержит разделенный запятыми список имен библиотек, где каждое имя должно восприниматься командой LOAD. Пробелы между именами игнорируются; если требуется включить в имя пробелы или запятые, заключите его в кавычки. Заданное значение этого параметра действует только в начале соединения. Последующие изменения ни на что не влияют. Если указанная в списке библиотека не найдена, попытка подключения завершится неудачно. Этот параметр могут изменить только суперпользователи.

Цель этого механизма — позволить загружать отладочные библиотеки или библиотеки для оценки производительности в конкретные сеансы, обходясь без явной команды LOAD. Например, можно загрузить модуль auto_explain во всех сеансах пользователя с заданным именем, установив этот параметр с помощью команды ALTER ROLE SET. Кроме того, этот параметр можно менять без перезапуска сервера (но изменения вступают в силу только при запуске нового сеанса), поэтому таким образом проще подгружать новые модули, даже если это нужно сделать для всех сеансов.

В отличие от shared_preload_libraries (см. ниже), загрузка библиотеки при запуске сеанса, а не при первом использовании не дает большого выигрыша в производительности. Однако при использовании пула соединений некоторое преимущество возникает.

shared_preload_libraries (string)

Эта переменная задает одну или несколько разделяемых библиотек, которые будут предварительно загружаться при запуске сервера. Она содержит разделенный запятыми список имен библиотек, где каждое имя должно восприниматься командой LOAD. Пробелы между именами игнорируются; если требуется включить в имя пробелы или запятые, заключите его в кавычки. Этот параметр можно задать только при запуске сервера. Если указанная в списке библиотека не будет найдена, сервер не запустится.

Некоторые библиотеки должны выполнять определенные операции, которые могут иметь место только при запуске процесса qhbmaster, например выделение разделяемой памяти, резервирование легких блокировок или запуск фоновых рабочих процессов. Такие библиотеки должны быть загружены при запуске сервера посредством этого параметра. За подробной информацией обратитесь к документации библиотек.

Также можно предварительно загрузить и другие библиотеки. Предварительная загрузка позволяет избавиться от задержки, возникающей при первом использовании библиотеки. Однако при этом может немного увеличиться время запуска каждого нового серверного процесса, даже если тот никогда не будет использовать эту библиотеку. Поэтому этот параметр рекомендуется применять только для библиотек, которые будут использоваться в большинстве сеансов. Кроме того, для изменения этого параметра требуется перезапуск сервера, поэтому он не подходит например, для краткосрочных задач отладки. Для подобных целей лучше применить параметр session_preload_libraries.

jit_provider (string)

Эта переменная представляет собой имя библиотеки провайдера JIT-компиляции, которая будет использоваться (см. подраздел Подключаемые провайдеры JIT-компиляции). Значение по умолчанию — llvmjit. Этот параметр можно задать только при запуске сервера.

Если указывается несуществующая библиотека, JIT-компиляция будет недоступна, но ошибки не возникнет. Это позволяет устанавливать поддержку JIT-компиляции отдельно от основного пакета QHB.


Другие параметры по умолчанию

dynamic_library_path (string)

Если необходимо открыть динамически загружаемый модуль и его имя, заданное в команде CREATE FUNCTION или LOAD, не содержит имени каталога (т. е. в имени нет слэша), система будет искать требуемый файл в этом пути.

Значением dynamic_library_path должен быть список абсолютных путей к каталогам, разделенных двоеточием. Если элемент списка начинается со специальной строки $libdir, вместо нее подставляется указанный при компиляции каталог пакета библиотек QHB; сюда устанавливаются модули, предоставляемые стандартным дистрибутивом QHB. (Чтобы узнать имя этого каталога, выполните pg_config --pkglibdir.) Например:

dynamic_library_path = '/usr/local/qhb/lib:/home/my_project/lib:$libdir'

Значение по умолчанию для этого параметра — '$libdir'. Если в качестве значения задана пустая строка, автоматический поиск по заданному пути выключается.

Суперпользователи могут изменить этот параметр в процессе работы, но изменение, выполненное таким образом, будет действовать только до завершения клиентского соединения, поэтому этот метод следует оставить для целей разработки. Для прочих целей этот параметр рекомендуется задавать в файле конфигурации qhb.conf.

gin_fuzzy_search_limit (integer)

Мягкий верхний предел для размера набора, возвращаемого при сканировании индексов GIN. Дополнительную информацию см. в разделе Советы и приемы для индексов GIN.