PG_CANCEL_BACKEND - Amazon Redshift

PG_CANCEL_BACKEND

Cancela uma consulta. PG_CANCEL_BACKEND é funcionalmente equivalente ao comando CANCEL. Você pode cancelar consultas atualmente em execução pelo seu usuário. Superusuários podem cancelar qualquer consulta.

Sintaxe

pg_cancel_backend( pid )

Argumentos

pid

O ID de processo (PID) da consulta a ser cancelada. Você não pode cancelar uma consulta especificando um ID de consulta; você deve especificar o ID de processo da consulta. Requer um valor INTEGER.

Tipo de retorno

Nenhum

Observações de uso

Se consultas em várias sessões têm bloqueios na mesma tabela, você pode usar a função PG_TERMINATE_BACKEND para encerrar uma das sessões, o que força todas as transações atualmente em execução na sessão encerrada a liberar todos os bloqueios e reverter a transação. Consulte a tabela de catálogo PG__LOCKS para visualizar os bloqueios atuais. Se você não puder cancelar uma consulta pois ela está em um bloco de transação (BEGIN… END), você pode encerrar a sessão na qual a consulta está em execução usando a função PG_TERMINATE_BACKEND.

Exemplos

Para cancelar uma consulta atualmente em execução, recupere primeiro o ID de processo para a consulta que você deseja cancelar. Para determinar os IDs de processo para todas as consultas em execução atualmente, execute o comando a seguir.

SELECT pid, TRIM(starttime) AS start, duration, TRIM(user_name) AS user, SUBSTRING(query,1,40) AS querytxt FROM stv_recents WHERE status = 'Running'; +-----+------------------------+----------+--------+-----------------------------+ | pid | starttime | duration | user | querytxt | +-----+------------------------+----------+--------+-----------------------------+ | 802 | 2013-10-14 09:19:03.55 | 132 | dwuser | select venuename from venue | | 834 | 2013-10-14 08:33:49.47 | 1250414 | dwuser | select * from listing; | | 964 | 2013-10-14 08:30:43.29 | 326179 | dwuser | select sellerid from sales | +-----+------------------------+----------+--------+-----------------------------+

Para cancelar a consulta com o ID de processo 802, use o exemplo a seguir.

SELECT PG_CANCEL_BACKEND(802);