Параметры совместимости версий и платформ

Документ описывает параметры в системной конфигурации в категории Версии и совместимость платформ.

Примечание!
Для обеспечения стабильности и безопасности системы ручное изменение этих параметров должно выполняться с осторожностью.


Версии ранее PostgreSQL 12

array_nulls


Этот параметр управляет тем, распознаёт ли парсер входных данных массивов незаключённые в кавычки NULL как элементы массива со значением NULL.

  • Значение по умолчанию — on, что позволяет вводить массивы, содержащие NULL.
  • Примечание: Массивы, содержащие значения NULL, всё ещё могут быть созданы даже при установке этого параметра в off.
Тип данных Значение по умолчанию Область настройки
boolean on master; session; reload

backslash_quote


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

  • Предпочтительный метод в соответствии со стандартом SQL — удвоение кавычки (''), но также допускается \'.
  • Однако использование \' представляет угрозу безопасности. В некоторых кодировках символьных наборов клиента последний байт многобайтового символа может численно совпадать с ASCII \'. Если клиентский код некорректно обрабатывает такие случаи, это может привести к атакам SQL-инъекций. Эту угрозу можно избежать, если сервер отклоняет запросы, использующие обратные слеши для экранирования одинарных кавычек.
  • Допустимые значения для этого параметра: on (всегда разрешать \'), off (всегда отклонять) и safe_encoding (разрешать только если кодировка клиента не допускает ASCII \ внутри многобайтовых символов).
  • Примечание: В стандартных строковых литералах \ означает \. Этот параметр влияет только на нестандартные строковые литералы, включая синтаксис экранированных строк (E'...').
Тип данных Значение по умолчанию Область настройки
enum safe_encoding master; session; reload

escape_string_warning


При включении этот параметр выдаёт предупреждение, если в обычном строковом литерале ('...' синтаксис) встречается обратный слеш (\), а standard_conforming_strings отключён.

  • Приложения, использующие обратные слеши в качестве символов экранирования, должны рассмотреть возможность использования синтаксиса экранированных строк (E'...'), поскольку стандарт SQL по умолчанию рассматривает обратные слеши как обычные символы в обычных строках.
  • Этот параметр можно включить для выявления кода, требующего доработки.
Тип данных Значение по умолчанию Область настройки
boolean on master; session; reload

lo_compat_privileges


Установка этого параметра в on отключает новые проверки прав доступа для совместимости с более ранними версиями.

  • Большие объекты не имеют прав доступа и поэтому доступны для чтения и записи всеми пользователями.
  • Включение этого параметра не отключает все проверки безопасности, связанные с большими объектами.
Тип данных Значение по умолчанию Область настройки
boolean off segments; session; reload; superuser

operator_precedence_warning


При включении парсер выдаёт предупреждение для любых конструкций, чей смысл изменился из-за изменений приоритета операторов начиная с PostgreSQL 9.4.

  • Это помогает провести аудит приложений, чтобы определить, повлияли ли изменения приоритета на поведение запросов. Однако этот параметр не предназначен для длительного использования в производственных средах, так как может выдавать предупреждения для абсолютно корректного, соответствующего стандарту SQL кода.
Тип данных Значение по умолчанию Область настройки
boolean off segments; session; reload

quote_all_identifiers


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

  • Это влияет на вывод EXPLAIN и результаты функций, таких как pg_get_viewdef. Также см. параметр --quote-all-identifiers в pg_dump и pg_dumpall.
Тип данных Значение по умолчанию Область настройки
boolean off segments; session; reload

standard_conforming_strings


Управляет тем, интерпретируют ли обычные строковые литералы ('...') обратные слеши как буквальные символы в соответствии со стандартом SQL.

  • Значение по умолчанию — on (в более ранних версиях значение по умолчанию было off).
  • Приложения могут проверять этот параметр, чтобы определить, как будут интерпретироваться строковые литералы.
  • Наличие этого параметра указывает на поддержку синтаксиса экранированных строк (E'...'). Приложениям, которым требуются обратные слеши в качестве символов экранирования, следует использовать синтаксис экранированных строк.
Тип данных Значение по умолчанию Область настройки
boolean on master; session; reload

synchronize_seqscans


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

  • При включении сканирование может начинаться с середины таблицы, а затем «обходить» её, возвращаясь к началу для охвата всех строк, синхронизируясь с текущей активностью сканирования.
  • Для запросов без условия ORDER BY это может привести к непредсказуемым изменениям порядка возвращаемых строк.
Тип данных Значение по умолчанию Область настройки
boolean on segments; session; reload

gp_debug_add_path


Определяет, добавляется ли отладочная информация о путях в базу данных YMatrix.

  • Этот параметр в основном используется для отладки оптимизатора. При включении он выводит все пути, рассматриваемые оптимизатором: красный цвет обозначает отклонённые пути, зелёный — выбранные.
Тип данных Значение по умолчанию Область настройки
boolean off master; session; reload


Другие платформы и клиенты

transform_null_equals


При включении выражения вида expr = NULL (или NULL = expr) интерпретируются как expr IS NULL; то есть выражение возвращает true, если expr имеет значение NULL, и false в противном случае.

  • Правильное поведение в соответствии со стандартом SQL для expr = NULL всегда возвращает NULL (неизвестно). Поэтому этот параметр по умолчанию установлен в off.
  • Однако запросы, генерируемые формами фильтра в Microsoft Access, используют expr = NULL для проверки на NULL. Если вы обращаетесь к базе данных через этот интерфейс, возможно, вы захотите включить эту опцию.
  • Поскольку выражения вида expr = NULL всегда возвращают NULL при интерпретации в соответствии со стандартом SQL, они не очень полезны и редко встречаются в типичных приложениях. Таким образом, включение этой опции не несёт значительного практического риска. Однако многие новые пользователи находят семантику выражений с NULL запутанной, поэтому эта опция отключена по умолчанию.
  • Обратите внимание, что эта опция влияет только на выражения вида = NULL, а не на другие операторы сравнения или эквивалентные выражения, включающие равенство (например, IN). Следовательно, эта опция не является универсальным решением для плохо написанных приложений.
Тип данных Значение по умолчанию Область настройки
boolean off master; session; reload