Link Search Menu Expand Document

ROLLBACK DELTA

Запрос позволяет откатить горячую (открытую) дельту. Отменяются следующие операции записи дельты:

Перед выполнением запроса необходимо определить логическую базу данных, используемую по умолчанию, если она еще не определена.

После выполнения запроса невозможно закрыть дельту, даже если попытка была неуспешной и запрос вернул исключение.

Запрос ROLLBACK DELTA не отменяет незавершенные операции записи, запущенные запросами обновления данных.
Операции закрытой дельты отменить невозможно.

Откат горячей дельты выполняется в следующем порядке:

  1. Останавливаются незавершенные операции записи, запущенные запросами загрузки данных.
    Операции останавливаются асинхронно, поэтому система с заданной периодичностью проверяет, остались ли неостановленные операции. Периодичность проверки регулируется параметром конфигурации DELTA_ROLLBACK_STATUS_CALLS_MS.
  2. Отменяются операции горячей дельты:
    • все завершенные операции,
    • операции, остановленные на шаге 1.
  3. Горячая дельта удаляется из сервисной базы данных. Зарезервированный ранее номер горячей дельты освобождается.

В ответе возвращается:

  • объект ResultSet c одной записью, содержащей номер последней закрытой дельты, при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

После успешного выполнения запроса становится доступно изменение логической схемы данных: создание, удаление и изменение таблиц и представлений.

Система не гарантирует остановку и отмену всех операций за один вызов. Если запрос вернул ошибку Can't rollback delta by datamart <db_name>, это означает, что некоторые операции не были отменены и нужно повторить запрос.

Горячую дельту невозможно откатить или закрыть, пока в ней есть незавершенные операции записи. Способы обработки таких операций см. в разделе Управление операциями записи.
Наличие незавершенных операций записи можно проверить с помощью запроса GET_WRITE_OPERATIONS.

Синтаксис

ROLLBACK DELTA