Совместимость с разными версиями и платформами

Предыдущие версии QHB

array_nulls (boolean)

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

Обратите внимание, что массивы, содержащие NULL, можно создавать, даже если эта переменная имеет значение off.

backslash_quote (enum)

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

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

escape_string_warning (boolean)

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

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

lo_compat_privileges (boolean)

Если задать для этой переменной значение on (включен), то новые проверки прав выключатся в целях совместимости с предыдущими версиями QHB. Значение по умолчанию — off (выключен). Только суперпользователи могут изменять этот параметр.

Установка этой переменной выключает не все проверки безопасности, связанные с большими объектами.

quote_all_identifiers (boolean)

Этот параметр принудительно заключает в кавычки все идентификаторы, даже если это не ключевые слова (в настоящее время), при получении SQL из базы данных. Это затрагивает вывод EXPLAIN а также результаты функций типа pg_get_viewdef. См. также описание параметра --quote-all-identifiers команд qhb_dump и qhb_dumpall.

standard_conforming_strings (boolean)

Этот параметр определяет, будут ли обычные строковые литералы ('...') воспринимать обратный слэш буквально, как указано в стандарте SQL. Значение по умолчанию — on (включен). Приложения могут проверять этот параметр, чтобы определить, как будут обрабатываться строковые литералы. Также наличие этого параметра может рассматриваться как признак того, что поддерживается синтаксис экранируемых строк (E'...'). Этот синтаксис (подраздел Строковые константы с управляющими последовательностями в стиле C) следует использовать, если приложению нужно, чтобы обратные слэши воспринимались как спецсимволы.

synchronize_seqscans (boolean)

Этот параметр позволяет синхронизировать обращения при последовательном сканировании больших таблиц, чтобы эти обращения считывали один блок примерно в одно и то же время и тем самым разделяли рабочую нагрузку на ввод-вывод данных. Когда этот параметр включен, сканирование может начаться в середине таблицы, чтобы синхронизироваться с уже выполняющимся сканированием, а достигнув конца, «завернуться» к началу, чтобы обработать оставшиеся строки. Это может привести к непредсказуемым изменениям порядка строк, возвращаемых запросами, в которых нет предложения ORDER BY. При значении off (выключен) последовательное сканирование всегда начинается с начала таблицы. Значение по умолчанию — on.


Совместимость с разными платформами и клиентами

transform_null_equals (boolean)

Когда этот параметр включен, выражения вида выражение = NULL (или NULL = выражение) обрабатываются как выражение IS NULL, то есть они возвращают true, если выражение дает значение NULL, и false в противном случае. Согласно спецификации SQL, сравнение выражение = NULL должно всегда возвращать NULL (неизвестное значение). Поэтому по умолчанию этот параметр выключен (установлен в off).

Обратите внимание, что этот параметр влияет только на точную форму сравнения = NULL, но не на другие операторы сравнения или другие выражения, которые в вычислительном отношении равнозначны некоторому выражению с оператором равенства (например IN). Таким образом, этот параметр не может быть универсальным решением проблем плохого программирования.

Сопутствующую информацию см. в разделе Функции и операторы сравнения.