---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/yql/syntax/pragma/global.md
  - https://ytsaurus.tech/docs/ru/yql/syntax/pragma/global.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

# Глобальные

## Область действия {#pragmascope}

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

Существуют также специальные scoped-прагмы, область действия которых определяется по тем же правилам, что и область видимости [именованных выражений](https://ytsaurus.tech/docs/ru/yql/syntax/expressions.md#named-nodes). Их область видимости ограничена некоторыми SQL-блоками: ACTION, SUBQUERY, лямбда.

В отличие от scoped прагм, глобальные прагмы могут использоваться только в глобальной области видимости (не внутри [DEFINE ACTION](https://ytsaurus.tech/docs/ru/yql/syntax/action.md#define-action) и [DEFINE SUBQUERY](https://ytsaurus.tech/docs/ru/yql/syntax/subquery.md#define-subquery)).

## AutoCommit {#autocommit}

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Автоматически выполнять [COMMIT](https://ytsaurus.tech/docs/ru/yql/syntax/commit.md) после каждого выражения.

## TablePathPrefix {#table-path-prefix}

| Тип значения | По умолчанию |
| --- | --- |
| Строка | — |

Добавить указанный префикс к путям таблиц внутри кластеров. Работает по принципу объединения путей в файловой системе: поддерживает ссылки на родительский каталог `..` и не требует добавления слеша справа. Например,

```yql
PRAGMA TablePathPrefix = "home/yql";
SELECT * FROM test;
```

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

## UDF {#udf}

| Тип значения | По умолчанию | Статическая /<br/>динамическая |
| --- | --- | --- |
| Строка | — | Статическая |
| Строка &mdash; имя префикса, добавляемого ко всем модулям | "" | Статическая |

Импорт всех UDF из указанной библиотеки. Чтобы прагма сработала, библиотеку необходимо приложить к запросу через иконку ![иконка](../../../../images/qt-ui-attach.png =30x30). Обратите внимание: библиотека должна быть разделяемой (.so) и она должна быть скомпилирована под Linux x64.

При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. Указание префикса позволяет подгрузить одну и ту же UDF разных версий.

## RuntimeLogLevel {#runtime-log-level}

| Тип значения | По умолчанию | Статическая /<br/>динамическая |
| --- | --- | --- |
| Строка, одно из `Trace`, `Debug`, `Info`, `Notice`, `Warn`, `Error`, `Fatal` | `Info` | Статическая |

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

## UseTablePrefixForEach {#use-table-prefix-for-each}

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |


`EACH`/`PARTITION_LIST` используют [TablePathPrefix](#table-path-prefix) для каждого элемента списка.

## Warning {#warning}

| Тип значения | По умолчанию |
| --- | --- |
| 1. Действие<br/>2. Код предупреждения либо символ "*"| — |

Действие:

* `disable` — отключить;
* `error` — приравнять к ошибке;
* `default` — вернуть поведение по умолчанию.

Код предупреждения возвращается вместе с самим текстом (в веб-интерфейсе отображается справа).

Примеры:

`PRAGMA Warning("error", "*");`
`PRAGMA Warning("disable", "1101");`
`PRAGMA Warning("default", "4503");`

В данном случае все предупреждения будут считаться ошибками, за исключением предупреждения с кодом `1101`, которое будет отключено, и `4503`, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией `PRAGMA Warning("error", "*");` (как минимум покрывать такие запросы автотестами).

[Список кодов предупреждений и ошибок](https://github.com/ytsaurus/ytsaurus/blob/main/yql/essentials/core/issue/protos/issue_id.proto)

## Greetings {#greetings}

| Тип значения | По умолчанию |
| --- | --- |
| Текст | — |

Выдать указанный текст в качестве Info сообщения запроса.

Пример: `PRAGMA Greetings("It's a good day!");`

## WarningMsg {#warningmsg}

| Тип значения | По умолчанию |
| --- | --- |
| Текст | — |

Выдать указанный текст в качестве Warning сообщения запроса.

Пример: `PRAGMA WarningMsg("Attention!");`

## DqEngine {#dqengine}

| Тип значения | По умолчанию |
| --- | --- |
| Строка disable/auto/force | "auto" |

При значении "auto" включает новый движок вычислений. Вычисления по возможности делаются без создания map/reduce операций. При значении "force" вычисление идёт в новый движок безусловно.

## SimpleColumns {#simplecolumns}

`SimpleColumns` / `DisableSimpleColumns`

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | true |

При использовании `SELECT foo.* FROM ... AS foo` убрать префикс  `foo.` у имён результирующих колонок.

Работает в том числе и для [JOIN](https://ytsaurus.tech/docs/ru/yql/syntax/join.md), но в этом случае имеет право упасть в случае конфликта имён (который можно разрешить с помощью [WITHOUT](https://ytsaurus.tech/docs/ru/yql/syntax/select/without.md) и переименования колонок). Для 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 &mdash; например `SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key)`. Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после `SELECT`.

## StrictJoinKeyTypes

`StrictJoinKeyTypes` / `DisableStrictJoinKeyTypes`

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Если флаг установлен, то [JOIN](https://ytsaurus.tech/docs/ru/yql/syntax/join.md) будет требовать строгого совпадения типов ключей.
По умолчанию `JOIN` предварительно конвертирует ключи к общему типу, что может быть нежелательно с точки зрения производительности.

`StrictJoinKeyTypes` является [scoped](#pragmascope) настройкой.


## 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-ов в операндах можно почитать [здесь](https://ytsaurus.tech/docs/ru/yql/syntax/expressions.md#in). Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiInForEmptyOrNullableItemsCollections`. Если никакой прагмы не задано, то выдаётся предупреждение и работает старый вариант.

## AnsiRankForNullableKeys

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Приводит поведение `RANK`/`DENSE_RANK` в соответствие со стандартом при наличии опциональных типов в ключах сортировки окна или в аргументе этих оконных функций. А именно:

* типом результата всегда является Uint64, а не Uint64?;
* null-ы в ключах считаются равными друг другу (текущая реализация возвращает NULL).

Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiRankForNullableKeys`. Если никакой прагмы не задано, то выдаётся предупреждение и работает старый вариант.

## AnsiCurrentRow

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Приводит неявное задание рамки окна при наличии [ORDER BY](https://ytsaurus.tech/docs/ru/yql/syntax/select/order_by.md) в соответствие со стандартом.

Если `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}

`OrderedColumns` / `DisableOrderedColumns`

Выводить [порядок колонок](https://ytsaurus.tech/docs/ru/yql/syntax/select/index.md#orderedcolumns) в `SELECT` / `JOIN` / `UNION [ALL]` / `INTERSECT [ALL]` / `EXCEPT [ALL]` и сохранять его при записи результатов. По умолчанию порядок колонок не определен.

## PositionalUnionAll {#positionalunionall}

Включить соответствующий стандарту поколоночный режим выполнения [UNION [ALL]](https://ytsaurus.tech/docs/ru/yql/syntax/select/operators.md#union), [INTERSECT [ALL]](https://ytsaurus.tech/docs/ru/yql/syntax/select/operators.md#intersect), [EXCEPT [ALL]](https://ytsaurus.tech/docs/ru/yql/syntax/select/operators.md#except). При этом автоматически включается [упорядоченность колонок](#orderedcolumns).

## RegexUseRe2

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Использовать Re2 UDF вместо Pcre для выполнения SQL операторов `REGEX`,`MATCH`,`RLIKE`. Re2 UDF поддерживает корректную обработку Unicode-символов в отличие от используемой по умолчанию Pcre UDF.

## ClassicDivision

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | true |

В классическом варианте результат целочисленного деления остаётся целочисленным (по умолчанию). Если отключить &mdash; результат всегда становится Double.

`ClassicDivision` является [scoped](#pragmascope) настройкой.

## CheckedOps

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

При включённом режиме: если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций `+`,`-`,`*`,`/`,`%` или унарной операции `-` над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается `NULL`. Если отключить &mdash; переполнение не проверяется.

Не влияет на операции с числами с  плавающей точкой или `Decimal`.

`CheckedOps` является [scoped](#pragmascope) настройкой.

## UnicodeLiterals

`UnicodeLiterals`/`DisableUnicodeLiterals`

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

При включённом режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном &mdash; `String`.

`UnicodeLiterals` является [scoped](#pragmascope) настройкой.

## WarnUntypedStringLiterals

`WarnUntypedStringLiterals`/`DisableWarnUntypedStringLiterals`

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

При включённом режиме для строковых литералов без суффиксов вида "foo"/'bar'/@@multiline@@ будет генерироваться предупреждение. Его можно подавить, если явно выбрать суффикс `s` для типа `String`, либо `u` для типа `Utf8`.

`WarnUntypedStringLiterals` является [scoped](#pragmascope) настройкой.

## SimplePg

`SimplePg`/`DisableSimplePg`

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

При включенном режиме в глобальное пространство функций импортируются все функции из модуля [SimplePg](https://ytsaurus.tech/docs/ru/yql/udf/list/simple_pg.md).
При выключенном режиме для вызова этих функций требуется префикс `SimplePg::`.

`SimplePg` является [scoped](#pragmascope) настройкой.

## AllowDotInAlias

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т. к. дальнейшее использование таких колонок в `JOIN` полностью не реализовано.

## WarnUnnamedColumns

| Тип значения | По умолчанию |
| --- | --- |
| Флаг | false |

Генерировать предупреждение, если для безымянного выражения в `SELECT` было автоматически сгенерировано имя колонки (вида `column[0-9]+`).

## GroupByLimit

| Тип значения | По умолчанию |
| --- | --- |
| Положительное число | 32 |

Увеличение лимита на число группировок в [GROUP BY](https://ytsaurus.tech/docs/ru/yql/syntax/group_by.md).

## GroupByCubeLimit

| Тип значения | По умолчанию |
| --- | --- |
| Положительное число | 5 |

Увеличение лимита на число размерностей [GROUP BY](https://ytsaurus.tech/docs/ru/yql/syntax/group_by.md#rollup-cube-group-sets).

Использовать нужно аккуратно, так как вычислительная сложность запроса растёт экспоненциально по отношению к числу размерностей.
