Updated on 2024-06-03 GMT+08:00

Server Signal Functions

Server signal functions send control signals to other server threads. Only the system administrator has the permission to execute the following functions:

  • pg_cancel_backend(pid int)

    Description: Cancels a statement that is being executed by a backend thread.

    Return type: Boolean

    Note: pg_cancel_backend sends a query cancellation (SIGINT) signal to the backend thread identified by pid. The PID of an active backend thread can be found in the pid column of the pg_stat_activity view, or can be found by listing the database thread using ps on the server. A user with the SYSADMIN permission, the owner of the database connected to the backend thread, the owner of the backend thread, or a user who inherits the built-in role permission gs_role_signal_backend can use this function.

  • pg_cancel_session(pid bigint, sessionid bigint)

    Description: Cancels the statement that is being executed by an active session in thread pool mode.

    Return type: Boolean

    Note: The input parameters of pg_cancel_session can be queried using the pid and sessionid columns in pg_stat_activity. The input parameters can be used to cancel the statements that are being executed by active sessions in thread pool mode. When the input parameters pid and sessionid are the same and both are thread IDs, the function of pg_cancel_backend is the same as that of pg_cancel_backend.

  • pg_cancel_invalid_query()

    Description: Cancels the invalid query of a backend.

    Return type: Boolean

    Note: Only the system administrator has the permission to cancel queries that are running in the backend of a degraded GTM.

  • pg_reload_conf()

    Description: Causes all server threads to overload their configuration files.

    Return type: Boolean

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

  • pg_rotate_logfile()

    Description: Rotates the log files of the server.

    Return type: Boolean

    Note: pg_rotate_logfile sends a signal to the log file manager, instructing the manager to immediately switch to a new output file. This function works only when redirect_stderr is used for log output. Otherwise, no log file manager sub-thread is generated.

  • pg_terminate_session(pid bigint, sessionid bigint)

    Description: Terminates a backend session in thread pool mode.

    Return type: Boolean

    Note: The input parameters of this function can be queried using the pid and sessionid fields in pg_stat_activity. A user with the SYSADMIN permission, the owner of the database connected to the session, the owner of the session, or a user who inherits the built-in role permission gs_role_signal_backend has the permission to use this function.

    When the input parameters pid and sessionid are the same and both are thread IDs, this function can terminate non-thread pool threads and active thread pool threads.

    When the input parameters pid and sessionid are different, this function can terminate active sessions or close inactive sessions and the socket connection of the client.

  • pg_terminate_active_session_socket(pid int64, sessionid int64)

    Description: Closes the socket connection between an active session and the client.

    Return type: Boolean

    Note: Each of these functions returns true if they are successful and false otherwise. This function can be used only by initial users.

  • pg_terminate_backend(pid int)

    Description: Terminates a backend thread. Only the system administrator and thread owner can use this function.

    Return type: Boolean

    Note: Each of these functions returns true if they are successful and false otherwise. A user with the SYSADMIN permission, the owner of the database connected to the backend thread, the owner of the backend thread, or a user who inherits the built-in role permission gs_role_signal_backend can use this function.

    This function can terminate non-thread pool threads and active thread pool threads, but cannot terminate inactive thread pool threads.

    Example:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    gaussdb=# SELECT pid from pg_stat_activity;
           pid       
    -----------------
     140657876268816
    (1 rows)
    
    gaussdb=# SELECT pg_terminate_backend(140657876268816);
     pg_terminate_backend 
    ----------------------
     t
    (1 row)