YQL — это SQL‑диалект, специфичный для базы данных YDB. YQL требует заранее объявлять имена и типы параметров запроса. Это обеспечивает высокую производительность и корректное поведение. В синтаксисе YQL параметры необходимо перечислять явно с помощью инструкции DECLARE. И этот нюанс YDB может быть неожиданным для пользователей традиционных баз данных. Кроме того, поскольку таблицы YDB находятся в структуре, подобной виртуальной файловой системе, их имена могут быть довольно длинными. Существует PRAGMA TablePathPrefix, которая может охватить остальную часть запроса внутри заданного префикса, упрощая имена таблиц. Например, запрос к таблице «/local/path/to/tables/seasons» может выглядеть следующим образом: Используя инструкцию PRAGMA, вы можете упростить префиксную часть в названии всех таблиц, участвующих в YQL-запросе: Также YQL поддерживает только именованные параметры запроса. Это означает, что вы не можете использовать привычные нумерованные (с использованием плейсхолдеров типа «$1», «$2», «$3» и т. п.) или позиционные (с использованием плейсхолдеров «?») параметры запроса. Это может стать неожиданностью для пользователей, привыкших к синтаксису PostgreSQL или MySQL (или другой СУБД). database/sql драйвер для YDB (часть YDB Go SDK) поддерживает биндинги (обогащение) запросов для: указания PRAGMA TablePathPrefix авто‑выведения DECLARE для типов параметров нумерованных или позиционных параметров запросов Биндинги запросов могут быть явно включены на этапе инициализации драйвера с помощью опций коннектора или параметра строки подключения. По умолчанию database/sql драйвер для YDB не изменяет запросы. Следующий пример (без включения биндингов запросов) демонстрирует работу с типами YDB явным образом: Как вы можете видеть, в этом примере также требовался импорт пакетов ydb‑go‑sdk и непосредственная работа с ними. С включенными биндингами тот же результат может быть достигнут намного проще: через параметры строку подключения: через опции коннектора: В обоих случаях исходный простой запрос на стороне драйвера будет обогащен до следующего: Этот обогащенный запрос будет отправлен в YDB вместо исходного. Порядок объявления привязок (через параметры строки подключения или через опции коннектора) определяет порядок, в котором биндинги отрабатывают на стороне драйвера. Дополнительные примеры включения биндингов запросов смотрите в документации ydb-go-sdk: 1) обогащение запроса прагмой TablePathPrefix: через параметры строки подключения через опции коннектора 2) авто-выведение типов параметров (DECLARE): через параметры строки подключения через опции коннектора 3) биндинг позиционных параметров: через параметры строки подключения через опции коннектора 4) биндинг нумерованных параметров: через параметры строки подключения через опции коннектора Для глубокого понимания биндингов запросов смотрите также unit-тесты в ydb-go-sdk Вы можете написать свои собственные unit-тесты для проверки корректности работы биндингов над вашими запросами следующим образом: Биндинги запросов в database/sql драйвере для YDB доступны начиная с версии v3.44.0 ydb-go-sdk. Пробуйте и возвращайтесь с обратной связью! Если у вас возникнут какие-либо трудности или вопросы, пожалуйста, не стесняйтесь обращаться к нам через: GitHub Telegram