Соответствие ANSI в Databricks Runtime
Область применения: Databricks Runtime
В этой статье описывается соответствие ANSI в Databricks Runtime. Режим ANSI в Databricks SQL см . в ANSI_MODE.
SQL Spark поддерживает два варианта обеспечения соответствия стандарту ANSI — spark.sql.ansi.enabled
и spark.sql.storeAssignmentPolicy
.
Если параметр spark.sql.ansi.enabled
имеет значение true
, то в SQL Spark используется диалект, совместимый с ANSI, а не с Hive. Например, при недопустимых входных данных оператора SQL или функции Spark вызывает исключение во время выполнения, а не возвращает результаты NULL. Некоторые возможности диалекта ANSI могут не соответствовать стандарту SQL ANSI, но их поведение соответствует стилю SQL ANSI.
Кроме того, Spark SQL имеет независимый параметр для управления неявным поведением приведения при хранении строк в таблице. Поведение приведения определяется как правила назначения хранилища в стандарте.
Если параметр spark.sql.storeAssignmentPolicy
имеет значение ANSI
, SQL Spark соответствует правилам назначения хранения ANSI. Это отдельная конфигурация, так как ее значение по умолчанию — ANSI
, а конфигурация spark.sql.ansi.enabled
по умолчанию отключена.
В следующей таблице описывается это поведение:
Имя свойства | По умолчанию. | Значение |
---|---|---|
spark.sql.ansi.enabled |
false | Если значение равно true, Spark пытается обеспечить соответствие спецификации SQL ANSI: — создает исключение среды выполнения, если переполнение происходит в любой операции в целочисленном или десятичном поле. — Запрещает использование зарезервированных ключевых слов ANSI SQL в качестве идентификаторов в средстве синтаксического анализа SQL. |
spark.sql.storeAssignmentPolicy |
ANSI | При сохранении значения в столбец с другим типом данных Spark выполняет преобразование типов. Существуют три политики для правил приведения типов: ANSI , legacy и strict .- ANSI — Spark выполняет приведение типов в соответствии с SQL ANSI. На практике поведение в основном совпадает с PostgreSQL. Запрещены некоторые неоправданные преобразования типов, такие как преобразование строки в int или double в boolean.- legacy — Spark позволяет приведение типов, если оно является допустимым приведением, которое очень свободное. Например, допускается преобразование строки в int или double в boolean. Это также является единственным поведением в Spark 2.x и совместимо с Hive.- strict — Spark не допускает какой-либо потери точности или усечения данных при приведении типов, например преобразование double в int или decimal в double не допускается. |
В следующих подразделах представлены изменения в поведении арифметических операций, преобразований типов и синтаксического анализа SQL при включенном режиме ANSI. В SQL Spark существует три типа преобразований типов, и в этой статье они появятся по очереди: приведение, назначение хранения и приведение типов.
Арифметические операции
В SQL Spark арифметическая операции с числовыми типами (кроме decimal) по умолчанию не проверяются на переполнение.
Это означает, что если операция приводит к переполнению, результат будет таким же, как и соответствующая операция в программе Java или Scala (например, если сумма 2 целых чисел превышает максимальное значение, которое может быть представлено, результатом будет отрицательное число). С другой стороны, SQL Spark возвращает значение NULL для переполнений типа decimal.
Если для параметра spark.sql.ansi.enabled
задано значение true
и в арифметических операциях с числами и интервалами возникнет переполнение, то во время выполнения будет создано арифметическое исключение.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Cost
Если для параметра spark.sql.ansi.enabled
задано значение true
, явное приведение с помощью синтаксиса CAST
вызовет исключение во время выполнения для недопустимых шаблонов приведения, определенных в стандарте, например приведения из строки в целое число.
Предложение CAST
режима ANSI Spark следуют правилам синтаксиса раздела 6.13 "Спецификация приведения" в стандарте ISO/МЭК 9075-2:2011 Информационные технологии. Языки баз данных - SQL. Часть 2: Foundation (SQL/Foundation), за исключением того, что оно специально позволяет выполнять следующие простые преобразования типов, которые запрещены в стандарте ANSI:
- NumericType <=> BooleanType
- StringType <=> BinaryType
Допустимые сочетания исходного и целевого типов данных в выражении CAST
приведены в таблице ниже.
"Да" означает, что сочетание является синтаксически допустимым без ограничений, а "Нет" означает, что сочетание недопустимо.
Исходный/целевой | Числовое | Строка | Дата | Метка времени | Интервал | Логический | Binary | Массив | Карта | Структура |
---|---|---|---|---|---|---|---|---|---|---|
Числовое | Y | Y | N | N | N | Y | N | N | N | N |
Строка | Y | Y | Y | Y | Y | Y | Y | N | N | N |
Дата | N | Y | Y | Y | N | N | N | N | N | N |
Метка времени | N | Y | Y | Y | N | N | N | N | N | N |
Интервал | N | Y | N | N | Y | N | N | N | N | N |
Логический | Y | Y | N | N | N | Y | N | N | N | N |
Binary | Y | N | N | N | N | N | Y | N | N | N |
Массив | N | N | N | N | N | N | N | Y | N | N |
Карта | N | N | N | N | N | N | N | N | Y | N |
Структура | N | N | N | N | N | N | N | N | N | Y |
-- Examples of explicit casting
-- `spark.sql.ansi.enabled=true`
> SELECT CAST('a' AS INT);
ERROR: [CAST_INVALID_INPUT] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed.
> SELECT CAST(2147483648L AS INT);
ERROR: [CAST_OVERFLOW] The value 2147483648L of the type "BIGINT" cannot be cast to "INT" due to an overflow.
> SELECT CAST(DATE'2020-01-01' AS INT)
ERROR: [DATATYPE_MISMATCH.CAST_WITH_FUNC_SUGGESTION] Cannot resolve "CAST(DATE '2020-01-01' AS INT)" due to data type mismatch: cannot cast "DATE" to "INT".
-- `spark.sql.ansi.enabled=false` (This is a default behavior)
> SELECT cast('a' AS INT);
null
> SELECT CAST(2147483648L AS INT);
-2147483648
> SELECT CAST(DATE'2020-01-01' AS INT);
null
Назначение хранения
spark.sql.storeAssignmentPolicy
Параметр по умолчаниюANSI
. При использовании этого параметра, если типы данных исходных значений не соответствуют типам целевых столбцов, Spark SQL автоматически добавляет предложения ANSI CAST в инструкцию INSERT.
Во время вставки таблицы в этой политике Spark проверяет и отклоняет недопустимые приведения, вызывая исключение для обеспечения качества данных. Это означает, что если попытка вставки завершается ошибкой из-за несоответствия типа, она не приведет к частичной записи данных в таблицу.
Примеры:
-- spark.sql.storeAssignmentPolicy=ANSI
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
ERROR: [CAST_OVERFLOW_IN_TABLE_INSERT] Fail to insert a value of "BIGINT" type into the "INT" type column `i` due to an overflow.
> INSERT INTO test VALUES ('a');
ERROR: [CAST_INVALID_INPUT ERROR] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed
В этих примерах показано, как Spark SQL предотвращает вставку несовместимых данных, тем самым сохраняя целостность данных.
spark.sql.storeAssignmentPolicy
Если задано значение LEGACY
, Sql Spark возвращает поведение, распространенное до Spark 2.x. В этом режиме вместо использования ANSI CAST применяется устаревшие операции CAST. В этой политике недопустимые приведения во время вставки таблицы приводят к вставке значений NULL или неверных значений, а не к исключению.
Примеры:
-- spark.sql.storeAssignmentPolicy=LEGACY
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
> INSERT INTO test VALUES ('a');
> SELECT * FROM test;
-- Results
-- -2147483648 (incorrect value due to overflow)
-- null (cannot cast 'a' to INT)
Приведение типов
Повышение и приоритет типов
Если spark.sql.ansi.enabled
имеет значение true
, SQL Spark использует несколько правил, определяющих способ разрешения конфликтов между типами данных.
В основе этого разрешения конфликтов лежит список приоритетов типов, который определяет, можно ли передать значения данного типа данных в другой тип данных неявным образом.
Тип данных | Список приоритета (от самых узких типов к самым широким) |
---|---|
Байт | Byte -> Short -> Int -> Long -> Decimal -> Float* -> Double |
Короткие | Short -> Int -> Long -> Decimal-> Float* -> Double |
Int | Int -> Long -> Decimal -> Float* -> Double |
Long | Long -> Decimal -> Float* -> Double |
Десятичное число | Decimal -> Float* -> Double |
Тип с плавающей запятой | Float -> Double |
Двойной | Двойной |
Дата | Date -> Timestamp |
Метка времени | Метка времени |
Строка | Строка |
Binary | Binary |
Логический | Логический |
Интервал | Интервал |
Карта | Map** |
Массив | Array** |
Структура | Struct** |
- Чтобы избежать потери точности, пропускается разрешение float для наименее общего типа.
** Для сложного типа правило приоритета применяется рекурсивно к элементам его компонентов.
К строковому типу (String) и нетипизированному значению NULL применяются особые правила. Значение NULL можно преобразовать в любой другой тип, а как String можно преобразовать в любой простой тип данных.
Это графическое изображение списка приоритетов в виде направленного дерева:
Разрешение наименьшего общего типа
Наименьший общий тип из набора является самым узким типом, который доступен всем элементам набора из списка приоритета.
Разрешение наименьшего общего типа используется в следующих целях:
- Чтобы решить, можно ли вызвать функцию, ожидающую параметр определенного типа, с помощью аргумента более узкого типа.
- Чтобы создать производный тип аргумента для функций, которые ожидают тип общего аргумента для нескольких параметров, например coalesce, least или greatest.
- Чтобы создать производные типы операндов для таких операций, как арифметические операции или сравнения.
- Чтобы создать производный тип результата для таких выражений, как выражение CASE.
- Чтобы создать производные типы элементов, ключей или значений для конструкторов массивов и схем.
Если наименьший общий тип разрешается в FLOAT, применяются специальные правила. При использовании значений типа float, если какой-либо из типов является INT, BIGINT или DECIMAL, наименее распространенный тип передается в DOUBLE, чтобы избежать возможной потери точности.
-- The coalesce function accepts any set of argument types as long as they share a least common type.
-- The result type is the least common type of the arguments.
> SET spark.sql.ansi.enabled=true;
> SELECT typeof(coalesce(1Y, 1L, NULL));
BIGINT
> SELECT typeof(coalesce(1, DATE'2020-01-01'));
Error: Incompatible types [INT, DATE]
> SELECT typeof(coalesce(ARRAY(1Y), ARRAY(1L)));
ARRAY<BIGINT>
> SELECT typeof(coalesce(1, 1F));
DOUBLE
> SELECT typeof(coalesce(1L, 1F));
DOUBLE
> SELECT (typeof(coalesce(1BD, 1F)));
DOUBLE
-- The substring function expects arguments of type INT for the start and length parameters.
> SELECT substring('hello', 1Y, 2);
he
> SELECT substring('hello', '1', 2);
he
> SELECT substring('hello', 1L, 2);
Error: Argument 2 requires an INT type.
> SELECT substring('hello', str, 2) FROM VALUES(CAST('1' AS STRING)) AS T(str);
Error: Argument 2 requires an INT type.
Функции SQL
Поведение некоторых функций SQL может отличаться в режиме ANSI (spark.sql.ansi.enabled=true
).
size
— эта функция возвращает значение NULL для входных данных со значением NULL в режиме ANSI.element_at
:- Эта функция создает исключение
ArrayIndexOutOfBoundsException
при использовании недопустимых индексов. - Эта функция создает исключение
NoSuchElementException
, если ключ не существует в сопоставлении.
- Эта функция создает исключение
elt
— эта функция создает исключениеArrayIndexOutOfBoundsException
при использовании недопустимых индексов.make_date
— эта функция завершается сбоем с исключением при недопустимой дате в результате.make_timestamp
— эта функция завершается сбоем с исключением при недопустимой метке времени в результате.make_interval
— эта функция завершается сбоем с исключением при недопустимом интервале в результате.next_day
— эта функция создает исключениеIllegalArgumentException
, если входные данные не являются допустимым днем недели.parse_url
— эта функция создает исключениеIllegalArgumentException
, если входная строка не является допустимым URL-адресом.to_date
— эта функция завершается сбоем с исключением, если не удается выполнить синтаксический анализ входной строки или строка шаблона недопустима.to_timestamp
— эта функция завершается сбоем с исключением, если не удается выполнить синтаксический анализ входной строки или строка шаблона недопустима.to_unix_timestamp
— эта функция завершается сбоем с исключением, если не удается выполнить синтаксический анализ входной строки или строка шаблона недопустима.unix_timestamp
— эта функция завершается сбоем с исключением, если не удается выполнить синтаксический анализ входной строки или строка шаблона недопустима.
Операторы SQL
Поведение некоторых операторов SQL может отличаться в режиме ANSI (spark.sql.ansi.enabled=true
).
array_col[index]
— этот оператор создает исключениеArrayIndexOutOfBoundsException
при использовании недопустимых индексов.map_col[key]
— этот оператор создает исключениеNoSuchElementException
, если ключ не существует в сопоставлении.CAST(string_col AS TIMESTAMP)
— этот оператор завершает работу с исключением, если входную строку не получается проанализировать.CAST(string_col AS DATE)
— этот оператор завершает работу с исключением, если входную строку не получается проанализировать.
Полезные функции для режима ANSI
Если режим ANSI включен, он создает исключения при недопустимых операциях. Для подавления этих исключений можно использовать перечисленные ниже функции SQL.
try_cast
— идентичнаCAST
, за исключением того, что она возвращает результатNULL
, а не создает исключение при возникновении ошибки времени выполнения.try_add
идентичен оператору сложения+
, за исключением того, что он возвращает результатNULL
, а не создает исключение в случае переполнения целочисленного значения.try_divide
идентичен оператору деления/
, за исключением того, что он возвращает результатNULL
, а не создает исключение в случае деления на 0.
Ключевые слова SQL
Если spark.sql.ansi.enabled
имеет значение true, SQL Spark будет использовать средство синтаксического анализа режима ANSI.
В этом режиме SQL Spark имеет два вида ключевых слов:
- Зарезервированные ключевые слова — ключевые слова, которые зарезервированы и не могут использоваться в качестве идентификаторов для таблиц, представлений, столбцов, функций, псевдонимов и т. д.
- Незарезервированные ключевые слова — ключевые слова, которые имеют специальное значение только в определенных контекстах и могут использоваться в качестве идентификаторов в других контекстах. Например,
EXPLAIN SELECT ...
является командой, но EXPLAIN может использоваться в качестве идентификаторов в других местах.
Если режим ANSI отключен, SQL Spark имеет два вида ключевых слов:
- Незарезервированные ключевые слова — то же определение, что и в режиме ANSI.
- Строгие незарезервированные ключевые слова — строгая версия незарезервированных ключевых слов, которые нельзя использовать в качестве псевдонима таблицы.
Значение spark.sql.ansi.enabled
по умолчанию — false.
Ниже приведен список всех ключевых слов в SQL Spark.
Ключевое слово | Режим ANSI Spark SQL | Режим SQL Spark по умолчанию | SQL-2016 |
---|---|---|---|
ADD | не зарезервировано | не зарезервировано | не зарезервировано |
ПОСЛЕ | не зарезервировано | не зарезервировано | не зарезервировано |
ВСЕ | скрытный | не зарезервировано | скрытный |
ИЗМЕНИТЬ | не зарезервировано | не зарезервировано | скрытный |
ALWAYS | не зарезервировано | не зарезервировано | не зарезервировано |
Анализ | не зарезервировано | не зарезервировано | не зарезервировано |
И | скрытный | не зарезервировано | скрытный |
ANTI | не зарезервировано | не зарезервировано, строгая версия | не зарезервировано |
ЛЮБАЯ | скрытный | не зарезервировано | скрытный |
АРХИВ | не зарезервировано | не зарезервировано | не зарезервировано |
ARRAY | не зарезервировано | не зарезервировано | скрытный |
AS | скрытный | не зарезервировано | скрытный |
ASC | не зарезервировано | не зарезервировано | не зарезервировано |
AT | не зарезервировано | не зарезервировано | скрытный |
AUTHORIZATION | скрытный | не зарезервировано | скрытный |
BETWEEN | не зарезервировано | не зарезервировано | скрытный |
BOTH | скрытный | не зарезервировано | скрытный |
BUCKET | не зарезервировано | не зарезервировано | не зарезервировано |
BUCKETS | не зарезервировано | не зарезервировано | не зарезервировано |
BY | не зарезервировано | не зарезервировано | скрытный |
CACHE | не зарезервировано | не зарезервировано | не зарезервировано |
CASCADE | не зарезервировано | не зарезервировано | не зарезервировано |
Затраты | скрытный | не зарезервировано | скрытный |
CAST | скрытный | не зарезервировано | скрытный |
ПО ЦЕННЫМ БУМАГАМ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОВЕРКА | скрытный | не зарезервировано | скрытный |
ОЧИСТИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
CLUSTER | не зарезервировано | не зарезервировано | не зарезервировано |
CLUSTERED | не зарезервировано | не зарезервировано | не зарезервировано |
CODEGEN | не зарезервировано | не зарезервировано | не зарезервировано |
COLLATE | скрытный | не зарезервировано | скрытный |
COLLECTION | не зарезервировано | не зарезервировано | не зарезервировано |
СТОЛБЕЦ | скрытный | не зарезервировано | скрытный |
СТОЛБЦЫ | не зарезервировано | не зарезервировано | не зарезервировано |
КОММЕНТАРИЙ | не зарезервировано | не зарезервировано | не зарезервировано |
COMMIT | не зарезервировано | не зарезервировано | скрытный |
COMPACT | не зарезервировано | не зарезервировано | не зарезервировано |
COMPACTIONS | не зарезервировано | не зарезервировано | не зарезервировано |
СРЕДА ВЫПОЛНЕНИЯ ПРИЛОЖЕНИЙ | не зарезервировано | не зарезервировано | не зарезервировано |
CONCATENATE | не зарезервировано | не зарезервировано | не зарезервировано |
ОГРАНИЧЕНИЯ | скрытный | не зарезервировано | скрытный |
COST | не зарезервировано | не зарезервировано | не зарезервировано |
CREATE | скрытный | не зарезервировано | скрытный |
CROSS | скрытный | не зарезервировано, строгая версия | скрытный |
CUBE | не зарезервировано | не зарезервировано | скрытный |
ТЕКУЩИЙ | не зарезервировано | не зарезервировано | скрытный |
CURRENT_DATE | скрытный | не зарезервировано | скрытный |
CURRENT_TIME | скрытный | не зарезервировано | скрытный |
CURRENT_TIMESTAMP | скрытный | не зарезервировано | скрытный |
CURRENT_USER | скрытный | не зарезервировано | скрытный |
ДАННЫЕ | не зарезервировано | не зарезервировано | не зарезервировано |
DATABASE | не зарезервировано | не зарезервировано | не зарезервировано |
БАЗЫ ДАННЫХ | не зарезервировано | не зарезервировано | не зарезервировано |
… | не зарезервировано | не зарезервировано | не зарезервировано |
DBPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
DEFINED | не зарезервировано | не зарезервировано | не зарезервировано |
DELETE | не зарезервировано | не зарезервировано | скрытный |
DELIMITED | не зарезервировано | не зарезервировано | не зарезервировано |
DESC | не зарезервировано | не зарезервировано | не зарезервировано |
DESCRIBE | не зарезервировано | не зарезервировано | скрытный |
DFS | не зарезервировано | не зарезервировано | не зарезервировано |
DIRECTORIES | не зарезервировано | не зарезервировано | не зарезервировано |
КАТАЛОГ | не зарезервировано | не зарезервировано | не зарезервировано |
DISTINCT | скрытный | не зарезервировано | скрытный |
DISTRIBUTE | не зарезервировано | не зарезервировано | не зарезервировано |
DIV | не зарезервировано | не зарезервировано | не является ключевым словом |
DROP | не зарезервировано | не зарезервировано | скрытный |
ELSE | скрытный | не зарезервировано | скрытный |
END | скрытный | не зарезервировано | скрытный |
ESCAPE | скрытный | не зарезервировано | скрытный |
ESCAPED | не зарезервировано | не зарезервировано | не зарезервировано |
ИСКЛЮЧЕНИЯ | скрытный | не зарезервировано, строгая версия | скрытный |
EXCHANGE | не зарезервировано | не зарезервировано | не зарезервировано |
EXISTS | не зарезервировано | не зарезервировано | скрытный |
EXPLAIN | не зарезервировано | не зарезервировано | не зарезервировано |
EXPORT | не зарезервировано | не зарезервировано | не зарезервировано |
EXTENDED | не зарезервировано | не зарезервировано | не зарезервировано |
EXTERNAL | не зарезервировано | не зарезервировано | скрытный |
EXTRACT | не зарезервировано | не зарезервировано | скрытный |
FALSE | скрытный | не зарезервировано | скрытный |
FETCH | скрытный | не зарезервировано | скрытный |
ПОЛЯ | не зарезервировано | не зарезервировано | не зарезервировано |
ФИЛЬТР | скрытный | не зарезервировано | скрытный |
FILEFORMAT | не зарезервировано | не зарезервировано | не зарезервировано |
FIRST | не зарезервировано | не зарезервировано | не зарезервировано |
ЛО | не зарезервировано | не зарезервировано | не зарезервировано |
FOLLOWING | не зарезервировано | не зарезервировано | не зарезервировано |
FOR | скрытный | не зарезервировано | скрытный |
FOREIGN | скрытный | не зарезервировано | скрытный |
FORMAT | не зарезервировано | не зарезервировано | не зарезервировано |
FORMATTED | не зарезервировано | не зарезервировано | не зарезервировано |
FROM | скрытный | не зарезервировано | скрытный |
FULL | скрытный | не зарезервировано, строгая версия | скрытный |
FUNCTION | не зарезервировано | не зарезервировано | скрытный |
ФУНКЦИИ | не зарезервировано | не зарезервировано | не зарезервировано |
GENERATED | не зарезервировано | не зарезервировано | не зарезервировано |
Глобальные | не зарезервировано | не зарезервировано | скрытный |
GRANT | скрытный | не зарезервировано | скрытный |
GRANTS | не зарезервировано | не зарезервировано | не зарезервировано |
ГРУППА | скрытный | не зарезервировано | скрытный |
ГРУППИРОВАНИЕ | не зарезервировано | не зарезервировано | скрытный |
HAVING | скрытный | не зарезервировано | скрытный |
HOUR | не зарезервировано | не зарезервировано | не зарезервировано |
ЕСЛИ | не зарезервировано | не зарезервировано | не является ключевым словом |
IGNORE | не зарезервировано | не зарезервировано | не зарезервировано |
ИМПОРТ | не зарезервировано | не зарезервировано | не зарезервировано |
В | скрытный | не зарезервировано | скрытный |
INDEX | не зарезервировано | не зарезервировано | не зарезервировано |
INDEXES | не зарезервировано | не зарезервировано | не зарезервировано |
INNER | скрытный | не зарезервировано, строгая версия | скрытный |
INPATH | не зарезервировано | не зарезервировано | не зарезервировано |
INPUTFORMAT | не зарезервировано | не зарезервировано | не зарезервировано |
ВСТАВИТЬ | не зарезервировано | не зарезервировано | скрытный |
INTERSECT | скрытный | не зарезервировано, строгая версия | скрытный |
INTERVAL | не зарезервировано | не зарезервировано | скрытный |
INTO | скрытный | не зарезервировано | скрытный |
IS | скрытный | не зарезервировано | скрытный |
ЭЛЕМЕНТЫ | не зарезервировано | не зарезервировано | не зарезервировано |
JOIN | скрытный | не зарезервировано, строгая версия | скрытный |
KEY | не зарезервировано | не зарезервировано | не зарезервировано |
KEYS | не зарезервировано | не зарезервировано | не зарезервировано |
LAST | не зарезервировано | не зарезервировано | не зарезервировано |
LATERAL | скрытный | не зарезервировано, строгая версия | скрытный |
LAZY | не зарезервировано | не зарезервировано | не зарезервировано |
LEADING | скрытный | не зарезервировано | скрытный |
LEFT | скрытный | не зарезервировано, строгая версия | скрытный |
LIKE | не зарезервировано | не зарезервировано | скрытный |
ILIKE | не зарезервировано | не зарезервировано | не зарезервировано |
LIMIT | не зарезервировано | не зарезервировано | не зарезервировано |
LINES | не зарезервировано | не зарезервировано | не зарезервировано |
LIST | не зарезервировано | не зарезервировано | не зарезервировано |
LOAD | не зарезервировано | не зарезервировано | не зарезервировано |
ЛОКАЛЬНО | не зарезервировано | не зарезервировано | скрытный |
LOCATION | не зарезервировано | не зарезервировано | не зарезервировано |
LOCK | не зарезервировано | не зарезервировано | не зарезервировано |
БЛОКИРОВКИ | не зарезервировано | не зарезервировано | не зарезервировано |
ЛОГИЧЕСКАЯ | не зарезервировано | не зарезервировано | не зарезервировано |
MACRO | не зарезервировано | не зарезервировано | не зарезервировано |
MAP | не зарезервировано | не зарезервировано | не зарезервировано |
MATCHED | не зарезервировано | не зарезервировано | не зарезервировано |
MERGE | не зарезервировано | не зарезервировано | не зарезервировано |
MINUTE | не зарезервировано | не зарезервировано | не зарезервировано |
MINUS | не зарезервировано | не зарезервировано, строгая версия | не зарезервировано |
MONTH | не зарезервировано | не зарезервировано | не зарезервировано |
MSCK; | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОСТРАНСТВО ИМЕН | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОСТРАНСТВА ИМЕН | не зарезервировано | не зарезервировано | не зарезервировано |
NATURAL | скрытный | не зарезервировано, строгая версия | скрытный |
Нет | не зарезервировано | не зарезервировано | скрытный |
Логическое НЕ | скрытный | не зарезервировано | скрытный |
NULL | скрытный | не зарезервировано | скрытный |
NULLS | не зарезервировано | не зарезервировано | не зарезервировано |
OF | не зарезервировано | не зарезервировано | скрытный |
DNS | скрытный | не зарезервировано, строгая версия | скрытный |
РЕГИСТРАНТОВ | скрытный | не зарезервировано | скрытный |
OPTION | не зарезервировано | не зарезервировано | не зарезервировано |
ПАРАМЕТРЫ | не зарезервировано | не зарезервировано | не зарезервировано |
ИЛИ | скрытный | не зарезервировано | скрытный |
ORDER | скрытный | не зарезервировано | скрытный |
ДАННЫЕ | не зарезервировано | не зарезервировано | скрытный |
OUTER | скрытный | не зарезервировано | скрытный |
OUTPUTFORMAT | не зарезервировано | не зарезервировано | не зарезервировано |
OVER | не зарезервировано | не зарезервировано | не зарезервировано |
OVERLAPS | скрытный | не зарезервировано | скрытный |
OVERLAY | не зарезервировано | не зарезервировано | не зарезервировано |
OVERWRITE | не зарезервировано | не зарезервировано | не зарезервировано |
СЕКЦИЯ | не зарезервировано | не зарезервировано | скрытный |
PARTITIONED | не зарезервировано | не зарезервировано | не зарезервировано |
РАЗДЕЛЫ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРОЦЕНТ | не зарезервировано | не зарезервировано | не зарезервировано |
PIVOT | не зарезервировано | не зарезервировано | не зарезервировано |
PLACING | не зарезервировано | не зарезервировано | не зарезервировано |
POSITION | не зарезервировано | не зарезервировано | скрытный |
PRECEDING | не зарезервировано | не зарезервировано | не зарезервировано |
ОСНОВНОЙ | скрытный | не зарезервировано | скрытный |
PRINCIPALS | не зарезервировано | не зарезервировано | не зарезервировано |
СВОЙСТВА | не зарезервировано | не зарезервировано | не зарезервировано |
PURGE | не зарезервировано | не зарезервировано | не зарезервировано |
QUALIFY | скрытный | не зарезервировано | скрытный |
QUERY | не зарезервировано | не зарезервировано | не зарезервировано |
RANGE | не зарезервировано | не зарезервировано | скрытный |
ПОЛУЧАТЕЛЬ | не зарезервировано | не зарезервировано | не зарезервировано |
ПОЛУЧАТЕЛЕЙ | не зарезервировано | не зарезервировано | не зарезервировано |
RECORDREADER | не зарезервировано | не зарезервировано | не зарезервировано |
RECORDWRITER | не зарезервировано | не зарезервировано | не зарезервировано |
RECOVER | не зарезервировано | не зарезервировано | не зарезервировано |
REDUCE | не зарезервировано | не зарезервировано | не зарезервировано |
ССЫЛКИ | скрытный | не зарезервировано | скрытный |
ОБНОВЛЕНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
REGEXP | не зарезервировано | не зарезервировано | не является ключевым словом |
УДАЛИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
RENAME | не зарезервировано | не зарезервировано | не зарезервировано |
REPAIR | не зарезервировано | не зарезервировано | не зарезервировано |
ЗАМЕНИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
СБРОСИТЬ | не зарезервировано | не зарезервировано | не зарезервировано |
RESPECT | не зарезервировано | не зарезервировано | не зарезервировано |
RESTRICT | не зарезервировано | не зарезервировано | не зарезервировано |
REVOKE | не зарезервировано | не зарезервировано | скрытный |
RIGHT | скрытный | не зарезервировано, строгая версия | скрытный |
RLIKE | не зарезервировано | не зарезервировано | не зарезервировано |
РОЛЬ | не зарезервировано | не зарезервировано | не зарезервировано |
РОЛИ | не зарезервировано | не зарезервировано | не зарезервировано |
ROLLBACK | не зарезервировано | не зарезервировано | скрытный |
ROLLUP | не зарезервировано | не зарезервировано | скрытный |
ROW | не зарезервировано | не зарезервировано | скрытный |
СТРОКИ | не зарезервировано | не зарезервировано | скрытный |
СХЕМА | не зарезервировано | не зарезервировано | не зарезервировано |
SCHEMAS | не зарезервировано | не зарезервировано | не является ключевым словом |
ВТОРОЙ | не зарезервировано | не зарезервировано | не зарезервировано |
SELECT | скрытный | не зарезервировано | скрытный |
SEMI | не зарезервировано | не зарезервировано, строгая версия | не зарезервировано |
SEPARATED | не зарезервировано | не зарезервировано | не зарезервировано |
SERDE | не зарезервировано | не зарезервировано | не зарезервировано |
SERDEPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
SESSION_USER | скрытный | не зарезервировано | скрытный |
SET | не зарезервировано | не зарезервировано | скрытный |
SETS | не зарезервировано | не зарезервировано | не зарезервировано |
ОБЩИЙ ДОСТУП | не зарезервировано | не зарезервировано | не зарезервировано |
ОБЩИЕ ПАПКИ | не зарезервировано | не зарезервировано | не зарезервировано |
SHOW | не зарезервировано | не зарезервировано | не зарезервировано |
SKEWED | не зарезервировано | не зарезервировано | не зарезервировано |
SOME | скрытный | не зарезервировано | скрытный |
СОРТИРОВКА | не зарезервировано | не зарезервировано | не зарезервировано |
SORTED | не зарезервировано | не зарезервировано | не зарезервировано |
НАЧАЛО | не зарезервировано | не зарезервировано | скрытный |
STATISTICS | не зарезервировано | не зарезервировано | не зарезервировано |
STORED | не зарезервировано | не зарезервировано | не зарезервировано |
STRATIFY | не зарезервировано | не зарезервировано | не зарезервировано |
STRUCT | не зарезервировано | не зарезервировано | не зарезервировано |
SUBSTR | не зарезервировано | не зарезервировано | не зарезервировано |
SUBSTRING | не зарезервировано | не зарезервировано | не зарезервировано |
СИНХРОННЫЙ | не зарезервировано | не зарезервировано | не зарезервировано |
TABLE | скрытный | не зарезервировано | скрытный |
ТАБЛИЦЫ | не зарезервировано | не зарезервировано | не зарезервировано |
TABLESAMPLE | не зарезервировано | не зарезервировано | скрытный |
TBLPROPERTIES | не зарезервировано | не зарезервировано | не зарезервировано |
TEMP | не зарезервировано | не зарезервировано | не является ключевым словом |
TEMPORARY | не зарезервировано | не зарезервировано | не зарезервировано |
ПРЕКРАЩЕНО | не зарезервировано | не зарезервировано | не зарезервировано |
THEN | скрытный | не зарезервировано | скрытный |
TIME | скрытный | не зарезервировано | скрытный |
TO | скрытный | не зарезервировано | скрытный |
TOUCH | не зарезервировано | не зарезервировано | не зарезервировано |
TRAILING | скрытный | не зарезервировано | скрытный |
ТРАНЗАКЦИЯ | не зарезервировано | не зарезервировано | не зарезервировано |
ТРАНЗАКЦИИ | не зарезервировано | не зарезервировано | не зарезервировано |
ПРЕОБРАЗОВАНИЕ | не зарезервировано | не зарезервировано | не зарезервировано |
TRIM | не зарезервировано | не зарезервировано | не зарезервировано |
TRUE | не зарезервировано | не зарезервировано | скрытный |
TRUNCATE | не зарезервировано | не зарезервировано | скрытный |
TRY_CAST | не зарезервировано | не зарезервировано | не зарезервировано |
ТИП | не зарезервировано | не зарезервировано | не зарезервировано |
UNARCHIVE | не зарезервировано | не зарезервировано | не зарезервировано |
UNBOUNDED | не зарезервировано | не зарезервировано | не зарезервировано |
UNCACHE | не зарезервировано | не зарезервировано | не зарезервировано |
UNION | скрытный | не зарезервировано, строгая версия | скрытный |
UNIQUE | скрытный | не зарезервировано | скрытный |
НЕИЗВЕСТНО | скрытный | не зарезервировано | скрытный |
UNLOCK | не зарезервировано | не зарезервировано | не зарезервировано |
UNSET | не зарезервировано | не зарезервировано | не зарезервировано |
UPDATE | не зарезервировано | не зарезервировано | скрытный |
USE | не зарезервировано | не зарезервировано | не зарезервировано |
Пользователь | скрытный | не зарезервировано | скрытный |
USING | скрытный | не зарезервировано, строгая версия | скрытный |
ЗНАЧЕНИЯ | не зарезервировано | не зарезервировано | скрытный |
ВИД | не зарезервировано | не зарезервировано | не зарезервировано |
VIEWS | не зарезервировано | не зарезервировано | не зарезервировано |
Если... | скрытный | не зарезервировано | скрытный |
WHERE | скрытный | не зарезервировано | скрытный |
ОКНО | не зарезервировано | не зарезервировано | скрытный |
ВМЕСТЕ С | скрытный | не зарезервировано | скрытный |
YEAR | не зарезервировано | не зарезервировано | не зарезервировано |
ZONE | не зарезервировано | не зарезервировано | не зарезервировано |