Документация / Диалекты SQL

Покрытие SQL-операций по диалектам

Матрица показывает, какие SQL-конструкции семантический listener реально обрабатывает (строит граф зависимостей), а какие — только разбирает синтаксически.

42 операции · 6 диалектов · обновлено 15.06.2026

PL/SQL
Oracle 19c+
89%
29 done · 6 partial · 1 missing
PostgreSQL
PG 13–17
81%
24 done · 7 partial · 3 missing
MySQL
8.x
87%
24 done · 6 partial · 1 missing
MariaDB
10.x–11.x
86%
24 done · 7 partial · 1 missing
ClickHouse
23.x+
83%
16 done · 3 partial · 2 missing
Trino
400+
77%
16 done · 2 partial · 4 missing
Реализовано
Частично
Не реализовано
N/A (конструкция отсутствует в диалекте)
ОперацияPL/SQLOracle 19c+PostgreSQLPG 13–17MySQL8.xMariaDB10.x–11.xClickHouse23.x+Trino400+
DQL — запросы
SELECT (базовый)
atoms, output columns
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
JOIN (типизированный)
INNER / LEFT / RIGHT / FULL / CROSS
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
Subquery
вложенный SELECT как источник
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
CTE (WITH … AS)
рекурсивные и нерекурсивные
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
Nested CTE (WITH в теле CTE)
WITH a AS ( WITH b AS(…) SELECT… ) SELECT…
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
UNION / INTERSECT / EXCEPT
каждый arm — отдельный scope
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
Window Functions (OVER)
atoms ✓; frame / PARTITION не анализируется
partial
partial
partial
partial
partial
partial
WHERE / HAVING capture
предикат → StatementInfo
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
Literal (STRING / NUMBER / NULL)
константы → atom с типом
partial
partial
✓ done
✓ done
partial
✓ done
Lambda guard
x -> expr — x не регистрируется как column
N/A
N/A
N/A
N/A
✓ done
✓ done
LATERAL JOIN
коррелированный подзапрос; outer scope lookup
✓ done
CONNECT BY (иерархический)
Oracle: PRIOR, LEVEL, SYS_CONNECT_BY_PATH
partial
N/A
N/A
N/A
N/A
N/A
DML — модификация
INSERT (VALUES / SELECT)
target table + column list
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
UPDATE
target + SET columns
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
DELETE
target + WHERE atoms
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
MERGE
target + USING source + WHEN clauses
✓ done
✓ done
N/A
N/A
N/A
✓ done
REPLACE (MySQL / MariaDB)
INSERT OR REPLACE upsert
N/A
N/A
✓ done
✓ done
N/A
N/A
CALL / EXEC
вызов процедуры → call edge
✓ done
✓ done
✓ done
✓ done
N/A
N/A
DO (анонимный блок)
outer stmt; тело не перепарсивается
N/A
✓ done
N/A
N/A
N/A
N/A
ARRAY JOIN
ClickHouse: ARRAY_INNER / ARRAY_LEFT
N/A
N/A
N/A
N/A
✓ done
N/A
INSERT ON DUPLICATE KEY UPDATE
MySQL / MariaDB upsert
N/A
N/A
partial
partial
N/A
N/A
SELECT INTO (переменная / таблица)
присваивание через SELECT
✓ done
✓ done
✓ done
✓ done
N/A
N/A
DDL — схема
CREATE TABLE
columns, types → DaliTable + DaliColumn
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
CREATE VIEW
view declaration + source SELECT
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
ALTER TABLE (ADD / DROP / RENAME col)
affectedColumnGeoids
✓ done
✓ done
✓ done
✓ done
✓ done
✓ done
CREATE TRIGGER
DDL stmt; тело не перепарсивается
✓ done
✓ done
✓ done
✓ done
N/A
N/A
CREATE INDEX
ссылка на таблицу
✓ done
✓ done
✓ done
✓ done
N/A
N/A
CREATE DICTIONARY
ClickHouse-специфик
N/A
N/A
N/A
N/A
✓ done
N/A
CREATE SEQUENCE
авто-инкрементный генератор
partial
✓ done
N/A
partial
N/A
RENAME TABLE / COLUMN
переименование объекта
partial
partial
Процедуры / функции
CREATE PROCEDURE
routine decl + call graph
✓ done
✓ done
✓ done
✓ done
N/A
N/A
CREATE FUNCTION
routine decl + return type
✓ done
✓ done
✓ done
✓ done
N/A
N/A
Параметры функции
IN / OUT / INOUT / VARIADIC → DaliRoutine
✓ done
✓ done
✓ done
✓ done
N/A
N/A
Cursor (DECLARE / FETCH)
cursorGeoid; record.field mapping
✓ done
partial
✓ done
✓ done
N/A
N/A
REF CURSOR (typed / untyped)
слабый и сильный курсорный тип
✓ done
partial
N/A
N/A
N/A
N/A
BULK COLLECT / FORALL
коллекция как источник atoms
✓ done
N/A
N/A
N/A
N/A
N/A
Package / Package Body
PL/SQL namespace для процедур и функций
✓ done
N/A
N/A
N/A
N/A
N/A
TYPE / OBJECT definition
RECORD / VARRAY / OBJECT / REF CURSOR
✓ done
N/A
N/A
N/A
DECLARE (переменные)
объявление переменных в теле процедуры
✓ done
✓ done
✓ done
✓ done
N/A
N/A
IF / ELSIF / ELSE
условный ветвящийся блок
partial
partial
partial
partial
N/A
N/A
CASE (expression / statement)
searched и simple; выражения и блоки
partial
partial
partial
partial
partial
partial
LOOP / WHILE / FOR
cursor FOR — explicit scope; WHILE — implicit
✓ done
partial
partial
partial
N/A
N/A
Динамический SQL — покрывается рантайм-слоем

EXECUTE IMMEDIATE и SQL, собранный из строк на лету, непрозрачны для статического разбора — текст, построенный в рантайме, нельзя восстановить из исходного кода. Поэтому динамический SQL покрывается не матрицей выше, а рантайм-слоем: если запрос логируется (события OpenLineage или логи выполнения), захваченный результат проходит функцию нормализации идентификаторов — приводится к каноническому виду и встраивается в тот же граф зависимостей. То, что не видно в статике, видно в выполнении.

MySQL на корпусе Beaver

Прогон MySQL-диалекта на корпусе Beaver (DDL + аналитические запросы): два файла, разбор за 14 минут, граф зависимостей на уровне колонок записан в YGG.

2 208
таблиц
16 223
колонок
34 929
запросов
0 процедур
237 760
атомов
единиц анализа
395 399
вершин YGG
978 078
рёбер графа
26 269 пропущено
98.9%
однозначно определено
2 553 неоднозначных
14m 12s
разбор корпуса
один экземпляр сервиса

Источник: сессия DALI на тенанте soak-main · MySQL 8.x · 2 файла (DDL + запросы).

Oracle PL/SQL на синтезированном ERP-корпусе

Прогон PL/SQL-диалекта на синтезированном Oracle ERP-корпусе (валидные файлы, сгенерированы программно): 78 файлов · 255 580 строк, схемы DWH / FIN / CRM / HR, 22 361 процедура. Разбор за 8 минут, граф зависимостей на уровне колонок записан в YGG.

2 118
таблиц
40 867
колонок
11 508
запросов
22 361
процедур
209 795
атомов
единиц анализа
364 238
вершин YGG
660 913
рёбер графа
81 866 пропущено
98.5%
однозначно определено
3 194 неоднозначных
7m 45s
разбор корпуса
один экземпляр сервиса

Крупнейшие файлы корпуса: PKG_MEGA_ANALYTICS.sql — 23 806 строк (один файл), FIN/_tables — 12 801, CRM — 11 094, HR — 9 317.

Источник: сессия DALI · корпус ERP_CORE_CANONICAL (78 файлов · 255 580 строк) · 99.93% разобрано.