Управление запросами¶
Просмотр списка активных запросов¶
Эта возможность не поддерживается в текущей версии TCS.
Отмена запроса¶
Эта возможность не поддерживается в текущей версии TCS.
Отправка нескольких SQL-инструкций (multi-statement)¶
На HTTP-адрес /sql можно отправлять сразу несколько SQL-инструкций, разделенных
точкой с запятой (;). Это могут быть любые SQL-инструкции, поддерживаемые TCS.
Примечание
Отправка нескольких нескольких SQL-инструкций через SQL-драйвер не поддерживается.
TCS обрабатывает инструкции в указанном порядке и возвращает список статусов.
Если обработка какой-либо инструкции заканчивается ошибкой, то TCS прекращает обработку инструкций и возвращает список статусов.
Пример запроса:
POST http://localhost:7777/sql HTTP/1.1
Content-Type: application/json
SELECT name FROM users; INSERT INTO names SELECT name FROM users; SELECT * FROM names ORDER BY name
Если, например, вторая инструкция (INSERT INTO names SELECT name FROM users) завершится ошибкой,
то третья инструкция тоже не выполнится.
Отправка параметризованных SQL-запросов по HTTP¶
TCS поддерживает отправку параметризованных SQL-запросов по HTTP. Параметры запроса передаются списком в соответствующей переменной:
args– список параметров при однократном вызове запроса (поддерживается для всех видов запросов):curl -u tcs:tcs -X POST -H "Content-Type: application/json" -d '{ "query": "SELECT * FROM t WHERE a>$1", "args": [0] }' http://localhost:7777/sql
bulk_args– список списков параметров для множественных вызовов (поддерживается для запросов INSERT, UPDATE, DELETE):curl -u tcs:tcs -X POST -H "Content-Type: application/json" -d '{ "query": "INSERT INTO t VALUES($1, $2)", "bulk_args": [[1,1], [2,2]] }' http://localhost:7777/sql
Управление транзакциями¶
В текущей версии TCS транзакции не поддерживаются ни через HTTP, ни через *DBC-интерфейс.
Включение схемы данных в ответ¶
По умолчанию, ответы на запросы к TCS содержат массив данных без указания схемы. Например:
$ curl -u tcs:tcs -d 'insert into t values(1)' http://127.0.0.1:7777/sql
{"responses":[{"is_success":true,"rows":[{"count":1}],"timings":{"collect":"494.295µs"}}]}%
При необходимости можно включить в ответ схему данных. Для этого в заголовке запроса нужно указать
параметр x-tcs-include-schema: true. Тогда в начале ответа возвращается схема данных в формате колонка:тип.
Причем схема данных включается в ответ, даже если возвращается 0 строк.
Например:
$ curl -u tcs:tcs -d 'insert into t values(1)' -H 'x-tcs-include-schema: true' http://127.0.0.1:7777/sql
{"responses":[{"is_success":true,"schema":[{"name":"count","type":"UInt64"}],"rows":[{"count":1}],"timings":{"collect":"311.063µs"}}]}
Примечание
Параметре x-tcs-include-schema: true – это единственный параметр, который текущая версия TCS поддерживает в запросах.
Работа со сложными запросами¶
TCS не накладывает ограничений на следующее:
глубина вложенности подзапросов;
количество таблиц\представлений, участвующих в запросе;
количество полей данных в результате;
количество подзапросов.
Разрешено использовать подзапросы, а также расчетные значения подзапросов в последующих подзапросах.
Работа с пользовательскими функциями и процедурами¶
Текущая версия TCS не поддерживает работу с пользовательскими функциями/процедурами.