Глобальные
- Область действия
 - AutoCommit
 - TablePathPrefix
 - UDF
 - RuntimeLogLevel
 - UseTablePrefixForEach
 - Warning
 - Greetings
 - WarningMsg
 - DqEngine
 - SimpleColumns
 - CoalesceJoinKeysOnQualifiedAll
 - StrictJoinKeyTypes
 - AnsiInForEmptyOrNullableItemsCollections
 - AnsiRankForNullableKeys
 - AnsiCurrentRow
 - OrderedColumns
 - PositionalUnionAll
 - RegexUseRe2
 - ClassicDivision
 - CheckedOps
 - UnicodeLiterals
 - WarnUntypedStringLiterals
 - AllowDotInAlias
 - WarnUnnamedColumns
 - GroupByLimit
 - GroupByCubeLimit
 
Область действия
Если не указано иное, глобальная прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается. При необходимости и логической возможности можно менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения.
Существуют также специальные scoped-прагмы, область действия которых определяется по тем же правилам, что и область видимости именованных выражений. Их область видимости ограничена некоторыми SQL-блоками: ACTION, SUBQUERY, лямбда.
В отличие от scoped прагм, глобальные прагмы могут использоваться только в глобальной области видимости (не внутри DEFINE ACTION и DEFINE SUBQUERY).
AutoCommit
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Автоматически выполнять COMMIT после каждого выражения.
TablePathPrefix
| Тип значения | По умолчанию | 
|---|---|
| Строка | — | 
Добавить указанный префикс к путям таблиц внутри кластеров. Работает по принципу объединения путей в файловой системе: поддерживает ссылки на родительский каталог .. и не требует добавления слеша справа. Например,
PRAGMA TablePathPrefix = "home/yql";
SELECT * FROM test;
        
    Префикс не добавляется, если имя таблицы указано как абсолютный путь (начинается с /).
UDF
| Тип значения | По умолчанию | Статическая / динамическая  | 
|---|---|---|
| Строка | — | Статическая | 
| Строка — имя префикса, добавляемого ко всем модулям | "" | Статическая | 
Импорт всех UDF из указанной библиотеки. Чтобы прагма сработала, библиотеку необходимо приложить к запросу через иконку 
. Обратите внимание: библиотека должна быть разделяемой (.so) и она должна быть скомпилирована под Linux x64.
При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. Указание префикса позволяет подгрузить одну и ту же UDF разных версий.
RuntimeLogLevel
| Тип значения | По умолчанию | Статическая / динамическая  | 
|---|---|---|
Строка, одно из Trace, Debug, Info, Notice, Warn, Error, Fatal | 
Info | 
Статическая | 
Позволяет поменять уровень логирования вычислений (например, для UDF) во время выполнения запроса или на этапе декларации сигнатуры UDF.
UseTablePrefixForEach
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
EACH использует TablePathPrefix для каждого элемента списка.
Warning
| Тип значения | По умолчанию | 
|---|---|
| 1. Действие 2. Код предупреждения либо символ "*"  | 
— | 
Действие:
disable— отключить;error— приравнять к ошибке;default— вернуть поведение по умолчанию.
Код предупреждения возвращается вместе с самим текстом (в веб-интерфейсе отображается справа).
Примеры:
PRAGMA Warning("error", "*");
PRAGMA Warning("disable", "1101");
PRAGMA Warning("default", "4503");
В данном случае все предупреждения будут считаться ошибками, за исключением предупреждения с кодом 1101, которое будет отключено, и 4503, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией PRAGMA Warning("error", "*"); (как минимум покрывать такие запросы автотестами).
Список кодов предупреждений и ошибок
Greetings
| Тип значения | По умолчанию | 
|---|---|
| Текст | — | 
Выдать указанный текст в качестве Info сообщения запроса.
Пример: PRAGMA Greetings("It's a good day!");
WarningMsg
| Тип значения | По умолчанию | 
|---|---|
| Текст | — | 
Выдать указанный текст в качестве Warning сообщения запроса.
Пример: PRAGMA WarningMsg("Attention!");
DqEngine
| Тип значения | По умолчанию | 
|---|---|
| Строка disable/auto/force | "auto" | 
При значении "auto" включает новый движок вычислений. Вычисления по возможности делаются без создания map/reduce операций. При значении "force" вычисление идёт в новый движок безусловно.
SimpleColumns
SimpleColumns / DisableSimpleColumns
| Тип значения | По умолчанию | 
|---|---|
| Флаг | true | 
При использовании SELECT foo.* FROM ... AS foo убрать префикс  foo. у имён результирующих колонок.
Работает в том числе и для JOIN, но в этом случае имеет право упасть в случае конфликта имён (который можно разрешить с помощью WITHOUT и переименования колонок). Для JOIN в режиме SimpleColumns производится неявный Coalesce для ключевых колонок: запрос SELECT * FROM T1 AS a JOIN T2 AS b USING(key) в режиме SimpleColumns работает как SELECT a.key ?? b.key AS key, ... FROM T1 AS a JOIN T2 AS b USING(key)
CoalesceJoinKeysOnQualifiedAll
CoalesceJoinKeysOnQualifiedAll / DisableCoalesceJoinKeysOnQualifiedAll
| Тип значения | По умолчанию | 
|---|---|
| Флаг | true | 
Управляет неявным Coalesce для ключевых колонок JOIN в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида foo.* или * в SELECT — например SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key). Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после SELECT.
StrictJoinKeyTypes
StrictJoinKeyTypes / DisableStrictJoinKeyTypes
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Если флаг установлен, то JOIN будет требовать строгого совпадения типов ключей.
По умолчанию JOIN предварительно конвертирует ключи к общему типу, что может быть нежелательно с точки зрения производительности.
StrictJoinKeyTypes является scoped настройкой.
AnsiInForEmptyOrNullableItemsCollections
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Наличие этой прагмы приводит поведение оператора IN в соответствие со стандартом в случае наличия NULL в левой или правой части оператора IN. Также изменено поведение IN в случае, когда справа был Tuple с элементами разных типов. Примеры:
1 IN (2, 3, NULL) = NULL (было Just(False))
NULL IN () = Just(False) (было NULL)
(1, null) IN ((2, 2), (3, 3)) = Just(False) (было NULL)
Подробнее про поведение IN при наличии NULL-ов в операндах можно почитать здесь. Явным образом выбрать старое поведение можно, указав прагму DisableAnsiInForEmptyOrNullableItemsCollections. Если никакой прагмы не задано, то выдаётся предупреждение и работает старый вариант.
AnsiRankForNullableKeys
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Приводит поведение RANK/DENSE_RANK в соответствие со стандартом при наличии опциональных типов в ключах сортировки окна или в аргументе этих оконных функций. А именно:
- типом результата всегда является Uint64, а не Uint64?;
 - null-ы в ключах считаются равными друг другу (текущая реализация возвращает NULL).
 
Явным образом выбрать старое поведение можно, указав прагму DisableAnsiRankForNullableKeys. Если никакой прагмы не задано, то выдаётся предупреждение и работает старый вариант.
AnsiCurrentRow
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Приводит неявное задание рамки окна при наличии ORDER BY в соответствие со стандартом.
Если AnsiCurrentRow не установлен, то окно (ORDER BY key) эквивалентно (ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW). Стандарт же требует, чтобы такое окно вело себя как (ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW).
Разница состоит в трактовке CURRENT ROW. В режиме ROWS CURRENT ROW трактуется буквально – текущая строка в партиции.
А в режиме RANGE конец рамки CURRENT ROW означает "последняя строка в партиции с ключом сортировки, равным текущей строке".
OrderedColumns
OrderedColumns / DisableOrderedColumns
Выводить порядок колонок в SELECT / JOIN / UNION [ALL] / INTERSECT [ALL] / EXCEPT [ALL] и сохранять его при записи результатов. По умолчанию порядок колонок не определен.
PositionalUnionAll
Включить соответствующий стандарту поколоночный режим выполнения UNION [ALL], INTERSECT [ALL], EXCEPT [ALL]. При этом автоматически включается упорядоченность колонок.
RegexUseRe2
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Использовать Re2 UDF вместо Pcre для выполнения SQL операторов REGEX,MATCH,RLIKE. Re2 UDF поддерживает корректную обработку Unicode-символов в отличие от используемой по умолчанию Pcre UDF.
ClassicDivision
| Тип значения | По умолчанию | 
|---|---|
| Флаг | true | 
В классическом варианте результат целочисленного деления остаётся целочисленным (по умолчанию). Если отключить — результат всегда становится Double.
ClassicDivision является scoped настройкой.
CheckedOps
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
При включённом режиме: если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций +,-,*,/,% или унарной операции - над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается NULL. Если отключить — переполнение не проверяется.
Не влияет на операции с числами с  плавающей точкой или Decimal.
CheckedOps является scoped настройкой.
UnicodeLiterals
UnicodeLiterals/DisableUnicodeLiterals
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
При включённом режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип Utf8, при выключенном — String.
UnicodeLiterals является scoped настройкой.
WarnUntypedStringLiterals
WarnUntypedStringLiterals/DisableWarnUntypedStringLiterals
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
При включённом режиме для строковых литералов без суффиксов вида "foo"/'bar'/@@multiline@@ будет генерироваться предупреждение. Его можно подавить, если явно выбрать суффикс s для типа String, либо u для типа Utf8.
WarnUntypedStringLiterals является scoped настройкой.
AllowDotInAlias
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т. к. дальнейшее использование таких колонок в JOIN полностью не реализовано.
WarnUnnamedColumns
| Тип значения | По умолчанию | 
|---|---|
| Флаг | false | 
Генерировать предупреждение, если для безымянного выражения в SELECT было автоматически сгенерировано имя колонки (вида column[0-9]+).
GroupByLimit
| Тип значения | По умолчанию | 
|---|---|
| Положительное число | 32 | 
Увеличение лимита на число группировок в GROUP BY.
GroupByCubeLimit
| Тип значения | По умолчанию | 
|---|---|
| Положительное число | 5 | 
Увеличение лимита на число размерностей GROUP BY.
Использовать нужно аккуратно, так как вычислительная сложность запроса растёт экспоненциально по отношению к числу размерностей.