Запрос WATCH
Это экспериментальная функция. Она может повлечь потерю совместимости в будущих версиях.
Чтобы использовать LIVE VIEW
и запросы WATCH
, включите настройку set allow_experimental_live_view = 1
.
Синтаксис
WATCH [db.]live_view [EVENTS] [LIMIT n] [FORMAT format]
Запрос WATCH
постоянно возвращает содержимое LIVE-представления. Если параметр LIMIT
не был задан, запрос WATCH
будет непрерывно обновлять содержимое LIVE-представления.
WATCH [db.]live_view;
Виртуальные столбцы
Виртуальный столбец _version
в результате запроса обозначает версию данного результата.
Пример:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv;
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:21 │ 1 │
└─────────────────────┴──────────┘
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:26 │ 2 │
└─────────────────────┴──────────┘
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:31 │ 3 │
└─────────────────────┴──────────┘
...
По умолчанию запрашиваемые данные возвращаются клиенту, однако в сочетании с запросом INSERT INTO они могут быть перенаправлены для вставки в другую таблицу.
Пример:
INSERT INTO [db.]table WATCH [db.]live_view ...
Секция EVENTS
С помощью параметра EVENTS
можно получить компактную форму результата запроса WATCH
. Вместо полного результата вы получаете номер последней версии результата.
WATCH [db.]live_view EVENTS;
Пример:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv EVENTS;
┌─version─┐
│ 1 │
└─────────┘
┌─version─┐
│ 2 │
└─────────┘
...
Секция LIMIT
Параметр LIMIT n
задает количество обновлений запроса WATCH
, после которого отслеживание прекращается. По умолчанию это число не задано, поэтому запрос будет выполняться постоянно. Значение LIMIT 0
означает, что запрос WATCH
вернет единственный актуальный результат запроса и прекратит отслеживание.
WATCH [db.]live_view LIMIT 1;
Пример:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv EVENTS LIMIT 1;
┌─version─┐
│ 1 │
└─────────┘
Секция FORMAT
Параметр FORMAT
работает аналогично одноименному параметру запроса SELECT.
При отслеживании LIVE VIEW через интерфейс HTTP следует использовать формат JSONEachRowWithProgress. Постоянные сообщения об изменениях будут добавлены в поток вывода для поддержания активности долговременного HTTP-соединения до тех пор, пока результат запроса изменяется. Проомежуток времени между сообщениями об изменениях управляется настройкойlive_view_heartbeat_interval.