
# 服务器信号函数
服务器信号函数向其他服务器进程发送控制信号。只有系统管理员才能使用这些函数。
#### pg_cancel_backend(pid int)
描述：取消指定后端线程的当前查询。
返回值类型：boolean
备注：pg_cancel_backend函数向指定的后端进程（由pid标识）发送一个查询取消信号（SIGINT）。要获取活动后端进程的PID，可以通过pg_stat_activity视图的pid字段查询，或者在服务器上使用ps命令列出数据库进程。
示例：
```
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)
描述：取消指定后端线程的当前查询，并附带取消的原因。该函数仅8.3.0及以上集群版本支持。
- pid，要取消的后端线程ID。
- reason，用于说明取消的原因的文本字符串。
返回值类型：boolean
备注：
- pg_cancel_backend函数向指定的后端进程（由pid标识）发送一个查询取消信号（SIGINT），并附带一个取消的原因。
- 9.1.0.226及以上9.1.0.xxx集群版本、9.1.1.200及以上集群版本中支持说明取消原因为"fault injection:malloc"，表示会对目标线程注入一个内存分配故障，可以取消不响应信号且进行内存分配的线程。
- 9.1.1.300及以上集群版本中支持说明取消原因为"fault injection:hash_seq_search"，表示会对目标线程注入一个hash_seq_search报错，可以取消不响应信号且进行hash_seq_search的线程。
- 9.1.1.300及以上集群版本中支持说明取消原因为"fault injection:sync_quit"，表示会对目标线程注入一个sync_quit退出标记，可以取消不响应信号且状态为sync_quit的线程，此场景必须先终止CN线程，再终止DN上tlevel\>0的stream线程，最后终止DN上tlevel等于0的top consumer线程。
示例：
```
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()
描述：服务器进程重新装载配置文件。
返回值类型：boolean
备注：pg_reload_conf给服务器发送一个SIGHUP信号，导致所有服务器进程重新装载配置文件。
示例：
```
SELECT pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)
```
#### pg_rotate_logfile()
描述：滚动服务器的日志文件。
返回值类型：boolean
备注：pg_rotate_logfile通知日志文件管理器立即切换到一个新的输出文件。该函数仅在内置日志收集器运行时有效。
示例：
```
SELECT pg_rotate_logfile();
 pg_rotate_logfile
-------------------
 t
(1 row)
```
#### pg_terminate_backend(pid int)
描述：终止一个后台线程。
返回值类型：boolean
备注：如果成功，函数返回true，否则返回false。
示例：
```
SELECT pid FROM pg_stat_activity;
       pid       
-----------------
 140657876268816
 140433774061312
 140433587902208
 140433656592128
 140433723717376
 140433637189376
 140433552770816
 140433481983744
 140433349310208
(9 rows)
SELECT pg_terminate_backend(140657876268816);
 pg_terminate_backend 
----------------------
 t
(1 row)
```
#### pg_wlm_jump_queue(pid int)
描述：调整任务到CN队列的最前端。
返回值类型：boolean
备注：如果成功，函数返回true，否则返回false。
示例：
```
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)
描述：调整作业的优先级到新控制组。
返回值类型：boolean
备注：如果成功，函数返回true，否则返回false。
#### pg_cancel_query(queryId int)
描述：取消一个后端的当前查询。该函数8.1.2及以上版本支持。
返回值类型：boolean
备注：pg_cancel_query向由query_id标识的后端进程发送一个查询取消（SIGINT）信号。一个活动的后端进程的query_id可以从pg_stat_activity视图的query_id字段找到。
示例：
```
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)
描述：取消当前集群下正在执行的查询。该函数8.1.2及以上版本支持。
返回值类型：boolean
备注：如果所有节点的查询均已取消，函数返回true，否则返回false。
示例：
```
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)
描述：终止一个后端的当前查询。该函数8.1.2及以上版本支持。
返回值类型：boolean
示例：
```
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)
描述：终止当前集群下正在执行的查询。该函数8.1.2及以上版本支持。
返回值类型：boolean
示例：
```
SELECT query_id FROM pgxc_stat_activity;
    query_id       
-----------------
 72339069014638631
(1 row)
SELECT pgxc_terminate_query(72339069014638631);
 pgxc_terminate_query 
----------------------
 t
(1 row)
```
