Updated on 2026-07-02 GMT+08:00

Server Signaling Functions

Server signaling functions send control signals to other server processes. Only system administrators can use these functions.

pg_cancel_backend(pid int)

Description: Cancels the current query of a specified backend process.

Return type: boolean

Note: pg_cancel_backend sends a signal (SIGINT) to the specified backend process (identified by PID) to cancel the query. The PID of an active backend process can be found in the pid column of the pg_stat_activity view, or can be found by listing the database process using ps on the server.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET';
       pid
-----------------
 281471222065200
(1 row)

SELECT pg_cancel_backend(281471222065200);
 pg_cancel_backend
-------------------
 t
(1 row)

pg_cancel_backend(pid int, reason text)

Description: Cancels the current query of a specified backend process, and attaches the reason for cancellation. This function is supported only in clusters of version 8.3.0 or later.

  • pid: ID of the backend process to be canceled.
  • reason: text string that describes the reason for cancellation.

Return type: boolean

Remarks:

  • The pg_cancel_backend function sends a query cancellation signal (SIGINT) and a cancellation reason to the specified backend process (identified by PID).
  • In clusters of version 9.1.0.226 or later (under 9.1.0.xxx) and 9.1.1.200 or later, the cancellation reason fault injection:malloc is supported. This injects a memory allocation fault into the target thread, which can cancel threads that are unresponsive to signals and performing memory allocation.
  • In clusters of version 9.1.1.300 or later, the cancellation reason fault injection:hash_seq_search is supported. This injects a hash_seq_search error into the target thread, which can cancel threads that are unresponsive to signals and performing hash_seq_search.
  • In clusters of version 9.1.1.300 or later, the cancellation reason fault injection:sync_quit is supported. This injects a sync_quit exit flag into the target thread, which can cancel threads that are unresponsive to signals and in a sync_quit state. In this scenario, the CN thread must be terminated first, followed by the stream threads on the DN with tlevel greater than 0, and finally the top consumer threads on the DN with tlevel equal to 0.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET';
       pid
-----------------
 281471222065200
(1 row)

SELECT pg_cancel_backend(281471222065200, 'fault injection:malloc');
 pg_cancel_backend
-------------------
 t
(1 row)

pg_reload_conf()

Description: Notifies the server process to reload the configuration file.

Return type: boolean

Note: pg_reload_conf sends a SIGHUP signal to the server. As a result, all server processes reload their configuration files.

Example:

1
2
3
4
5
SELECT pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

pg_rotate_logfile()

Description: Rotates the log files of the server.

Return type: boolean

Note: pg_rotate_logfile instructs the log file manager to immediately switch to a new output file. This function is valid only if the built-in log collector is running.

Example:

1
2
3
4
5
SELECT pg_rotate_logfile();
 pg_rotate_logfile
-------------------
 t
(1 row)

pg_terminate_backend(pid int)

Description: Terminates a backend thread.

Return type: boolean

Note: Each of these functions returns true if they are successful and false otherwise.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
postgres=#SELECT pid FROM pg_stat_activity;
       pid       
-----------------
 140657876268816
 140433774061312
 140433587902208
 140433656592128
 140433723717376
 140433637189376
 140433552770816
 140433481983744
 140433349310208
(9 rows)

postgres=#SELECT pg_terminate_backend(140657876268816);
 pg_terminate_backend 
----------------------
 t
(1 row)

pg_wlm_jump_queue(pid int)

Description: Moves a task to the top of the CN queue.

Return type: Boolean

Note: Each of these functions returns true if they are successful and false otherwise.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET';
       pid
-----------------
 281471222065200
(1 row)

SELECT pg_wlm_jump_queue(281471222065200);
 pg_wlm_jump_queue
-------------------
 t
(1 row)

gs_wlm_switch_cgroup(pid int, cgroup text)

Description: Moves a job to other Cgroup to improve the job priority.

Return type: Boolean

Note: Each of these functions returns true if they are successful and false otherwise.

pg_cancel_query(queryId int)

Description: Cancels a current query of the backend. This function is supported in 8.1.2 or later.

Return type: boolean

Note: pg_cancel_query sends a query cancellation signal (SIGINT) to the backend process identified by query_id. The query_id of an active backend process can be found in the query_id column of the pg_stat_activity view.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET';
 query_id
----------
        0
        0
(2 rows)

SELECT pg_cancel_query(0);
 pg_cancel_query
-----------------
 f
(1 row)

pgxc_cancel_query(queryId int)

Description: Cancels the query that is being executed in the current cluster. This function is supported in 8.1.2 or later.

Return type: boolean

Note: If the queries of all nodes have been canceled, true is returned. Otherwise, false is returned.

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET';
 query_id
----------
        0
        0
(2 rows)

SELECT pgxc_cancel_query(0);
 pgxc_cancel_query
-------------------
 f
(1 row)

pg_terminate_query(queryId int)

Description: Terminates a current query of the backend. This function is supported in 8.1.2 or later.

Return type: boolean

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET';
 query_id
----------
        0
        0
(2 rows)

SELECT pg_terminate_query(0);
 pg_terminate_query
--------------------
 f
(1 row)

pgxc_terminate_query(queryId int)

Description: Terminates the query that is being executed in the current cluster. This function is supported in 8.1.2 or later.

Return type: boolean

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
postgres=#SELECT query_id FROM pgxc_stat_activity;
    query_id       
-----------------
 72339069014638631
(1 rows)

postgres=#SELECT pgxc_terminate_query(72339069014638631);
 pgxc_terminate_query 
----------------------
 t
(1 row)