FirebirdSQL logo

Сброс состояния сессии

ALTER SESSION RESET

Назначение

Сброс сессионного окружения.

Доступно в

DSQL

Синтаксис
ALTER SESSION RESET

Сбрасывает сеансовое окружение (подключения) к исходному состоянию.Эта функциональность полезна если сеанс используется повторно, вместо того чтобы производить отключение/подключение.

Данный оператор делает следующее:

  • генерируется ошибка (isc_ses_reset_err), если в текущем соединении существует какая-либо открытая транзакция, кроме текущей транзакции и подготовленных транзакций 2PC, которые разрешены и игнорируются этой проверкой;

  • системная переменная RESETTING устанавливается в TRUE;

  • запускаются триггеры базы данных на событие ON DISCONNECT, если они присутствуют и разрешены для текущего соединения;

  • текущая пользовательская транзакция откатывается (ROLLBACK), если она есть. Если в текущей активной транзакции были произведены изменения, то будет выдано предупреждение;

  • сбрасывает установленные параметры DECFLOAT (BIND, TRAP и ROUND) в значения по умолчанию;

  • сбрасывает тайм-ауты сессии и оператора в 0;

  • удаляет все контекстные переменные из пространства имён USER_SESSION;

  • сбрасывает роль в значение переданное в DPB (указанное при подключении) и очищает кеш привилегий (если роль была изменена с помощью оператора SET ROLE);

  • очищает содержимое всех используемых глобальных таблиц уровня соединения (GLOBAL TEMPORARY TABLE …​ ON COMMIT PRESERVE ROWS);

  • запускаются триггеры базы данных на событие ON CONNECT, если они присутствуют и разрешены для текущего соединения;

  • начинает новую транзакцию с теми же свойствами, что и транзакция, которая была отменена (если транзакция присутствовала до сброса);

  • системная переменная RESETTING устанавливается в FALSE.

Обработка ошибок

Ошибка, возникшая в триггере ON DISCONNECT, прерывает сброс сеанса и оставляет состояние сеанса неизменным.Такие ошибки сообщаются с кодом основной ошибки isc_session_reset_err и текстом ошибки“Cannot reset user session”.

Ошибки, возникающие после того, как триггеры ON DISCONNECT выполнены, прерывают выполнение оператора сброса сеанса и само соединение.Такие ошибки сообщались с кодом основной ошибки isc_session_reset_failed и текстом ошибки“Reset of user session failed. Connection is shut down”.Последующие операции по подключению (кроме отсоединения) завершатся ошибкой isc_att_shutdown.

См. также:

RESETTING.

docnext count = 4

Управление оптимизатором

SET OPTIMIZE

Назначение

Изменение стратегии оптимизатора.

Доступно в

DSQL

Синтаксис
SET OPTIMIZE <optimize-mode>

<optimize-mode> ::=
    FOR {FIRST | ALL} ROWS
  | TO DEFAULT

Оператор SET OPTIMIZE позволяет изменить стратегию оптимизатора на уровне текущей сессии.

Существует две стратегии оптимизации запросов:

  • FIRST ROWS - оптимизатор строит план запроса так, чтобы наиболее быстро извлечь только первые строки запроса;

  • ALL ROWS - оптимизатор строит план запроса так, чтобы наиболее быстро извлечь все строки запроса.

По умолчанию используется стратегия оптимизации указанная в параметре OptimizeForFirstRows конфигурационного файлаfirebird.conf или database.conf. OptimizeForFirstRows = false соответствует стратегии ALL ROWS,OptimizeForFirstRows = true соответствует стратегии FIRST ROWS.

Стратегия оптимизации может быть переопределена на уровне SQL оператора с помощью предложения OPTIMIZE FOR.

См. также:

OPTIMIZE FOR.

Отладка

SET DEBUG OPTION

Устанавливает опции отладки.

Синтаксис
SET DEBUG OPTION option-name = value
Table 1. Поддерживаемые опции
Наименование опции Тип значения Описание

DSQL_KEEP_BLR

BOOLEAN

Сохраняет BLR оператора для извлечения с помощьюisc_info_sql_exec_path_blr_bytes и isc_info_sql_exec_path_blr_text.

Оператор SET DEBUG OPTION настраивает отладочную информацию для текущего соединения.

Warning

Параметры отладки тесно связаны с внутренними компонентами движка, и их использование не рекомендуется, если вы не понимаете, как эти внутренние компоненты могут изменяться в зависимости от версии.