Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
CANCEL
Annulla una query del database attualmente in esecuzione.
Il comando CANCEL richiede l’ID processo o l’ID sessione della query in esecuzione e visualizza un messaggio di conferma per verificare che la query sia stata annullata.
Privilegi richiesti
Di seguito sono riportati i privilegi richiesti per CANCEL:
-
Utente con privilegi avanzati che annulla la propria query
-
Utente con privilegi avanzati che annulla la query di un utente
-
Utenti con il privilegio CANCEL che annulla la query di un utente
-
Utente che annulla la propria query
Sintassi
CANCEL process_id [ 'message' ]
Parametri
- process_id
-
Per annullare una query in esecuzione in un cluster Amazon Redshift, utilizza
pid(ID processo) di STV_RECENTS corrispondente alla query da annullare.Per annullare una query in esecuzione in un gruppo di lavoro Amazon Redshift serverless, utilizza
session_iddi SYS_QUERY_HISTORY corrispondente alla query da annullare. - 'message'
-
Messaggio di conferma facoltativo che viene visualizzato al termine dell'annullamento della query. Se non si specifica un messaggio, Amazon Redshift visualizza il messaggio predefinito come verifica. È necessario racchiudere il messaggio tra virgolette singole.
Note per l'utilizzo
Non puoi annullare una query specificando un ID query. Devi specificare l’ID processo (PID) o l’ID sessione della query. Puoi annullare solo le query attualmente eseguite dall'utente. Gli utenti con privilegi avanzati possono annullare tutte le query.
Se le query in più sessioni contengono blocchi sulla stessa tabella, è possibile utilizzare la funzione PG_TERMINATE_BACKEND per terminare una delle sessioni. Questa operazione forza qualsiasi transazione attualmente in esecuzione nella sessione terminata al fine di rilasciare tutti i blocchi ed eseguire il rollback della transazione. Per visualizzare i blocchi correnti, eseguire una query sulla tabella di sistema STV_LOCKS.
Seguendo determinati eventi interni, Amazon Redshift può riavviare una sessione attiva e assegnare un nuovo PID. Se il PID è cambiato, è possibile che venga ricevuto il seguente messaggio di errore:
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.
Per trovare il nuovo PID, eseguire una query sulla tabella di sistema STL_RESTARTED_SESSIONS e filtrare la colonna oldpid.
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;
Esempi
Per annullare una query attualmente in esecuzione in un cluster Amazon Redshift, recupera prima l’ID processo della query da annullare. Per determinare gli ID processo di tutte le query attualmente in esecuzione, digita il seguente comando:
select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);
Controlla il testo della query per determinare quale ID processo (PID) corrisponde alla query che vuoi annullare.
Digita il seguente comando per utilizzare PID 802 per annullare quella query:
cancel 802;
La sessione in cui è stata eseguita la query visualizza il seguente messaggio:
ERROR: Query (168) cancelled on user's request
dove 168 è l'ID query (non l'ID processo utilizzato per annullare la query).
In alternativa, puoi specificare un messaggio di conferma personalizzato da visualizzare al posto del messaggio predefinito. Per specificare un messaggio personalizzato, includi il messaggio tra virgolette singole alla fine del comando CANCEL:
cancel 802 'Long-running query';
La sessione in cui è stata eseguita la query visualizza il seguente messaggio:
ERROR: Long-running query