PostgreSQL Source Code git master
Loading...
Searching...
No Matches
cancel.c File Reference
#include "postgres_fe.h"
#include <unistd.h>
#include "common/connect.h"
#include "fe_utils/cancel.h"
#include "fe_utils/string_utils.h"
Include dependency graph for cancel.c:

Go to the source code of this file.

Macros

#define write_stderr(str)
 

Functions

void SetCancelConn (PGconn *conn)
 
void ResetCancelConn (void)
 
static void handle_sigint (SIGNAL_ARGS)
 
void setup_cancel_handler (void(*query_cancel_callback)(void))
 

Variables

static PGcancel *volatile cancelConn = NULL
 
static const charcancel_sent_msg = NULL
 
static const charcancel_not_sent_msg = NULL
 
volatile sig_atomic_t CancelRequested = false
 
static void(* cancel_callback )(void) = NULL
 

Macro Definition Documentation

◆ write_stderr

#define write_stderr (   str)
Value:
do { \
const char *str_ = (str); \
int rc_; \
rc_ = write(fileno(stderr), str_, strlen(str_)); \
(void) rc_; \
} while (0)
const char * str
#define write(a, b, c)
Definition win32.h:14
static int fb(int x)

Definition at line 31 of file cancel.c.

32 { \
33 const char *str_ = (str); \
34 int rc_; \
35 rc_ = write(fileno(stderr), str_, strlen(str_)); \
36 (void) rc_; \
37 } while (0)

Function Documentation

◆ handle_sigint()

static void handle_sigint ( SIGNAL_ARGS  )
static

Definition at line 153 of file cancel.c.

154{
155 char errbuf[256];
156
157 CancelRequested = true;
158
159 if (cancel_callback != NULL)
161
162 /* Send QueryCancel if we are processing a database query */
163 if (cancelConn != NULL)
164 {
165 if (PQcancel(cancelConn, errbuf, sizeof(errbuf)))
166 {
168 }
169 else
170 {
172 write_stderr(errbuf);
173 }
174 }
175}
volatile sig_atomic_t CancelRequested
Definition cancel.c:59
static void(* cancel_callback)(void)
Definition cancel.c:68
static const char * cancel_sent_msg
Definition cancel.c:49
static PGcancel *volatile cancelConn
Definition cancel.c:43
#define write_stderr(str)
Definition cancel.c:31
static const char * cancel_not_sent_msg
Definition cancel.c:50
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize)
Definition fe-cancel.c:548

References cancel_callback, cancel_not_sent_msg, cancel_sent_msg, cancelConn, CancelRequested, fb(), PQcancel(), and write_stderr.

Referenced by setup_cancel_handler().

◆ ResetCancelConn()

void ResetCancelConn ( void  )

Definition at line 107 of file cancel.c.

108{
110
111#ifdef WIN32
113#endif
114
116
117 /* be sure handle_sigint doesn't use pointer while freeing */
119
120 if (oldCancelConn != NULL)
122
123#ifdef WIN32
125#endif
126}
void PQfreeCancel(PGcancel *cancel)
Definition fe-cancel.c:502

References cancelConn, fb(), and PQfreeCancel().

Referenced by CheckConnection(), consumeQueryResult(), do_connect(), do_lo_export(), do_lo_import(), do_lo_unlink(), executeMaintenanceCommand(), HandleCopyResult(), PSQLexec(), PSQLexecWatch(), runInitSteps(), SendQuery(), and wait_on_slots().

◆ SetCancelConn()

void SetCancelConn ( PGconn conn)

Definition at line 77 of file cancel.c.

78{
80
81#ifdef WIN32
83#endif
84
85 /* Free the old one if we have one */
87
88 /* be sure handle_sigint doesn't use pointer while freeing */
90
91 if (oldCancelConn != NULL)
93
95
96#ifdef WIN32
98#endif
99}
PGcancel * PQgetCancel(PGconn *conn)
Definition fe-cancel.c:368
PGconn * conn
Definition streamutil.c:52

References cancelConn, conn, fb(), PQfreeCancel(), and PQgetCancel().

Referenced by consumeQueryResult(), do_lo_export(), do_lo_import(), do_lo_unlink(), executeMaintenanceCommand(), HandleCopyResult(), PSQLexec(), PSQLexecWatch(), runInitSteps(), SendQuery(), and wait_on_slots().

◆ setup_cancel_handler()

void setup_cancel_handler ( void(*)(void query_cancel_callback)

Definition at line 183 of file cancel.c.

184{
186 cancel_sent_msg = _("Cancel request sent\n");
187 cancel_not_sent_msg = _("Could not send cancel request: ");
188
190}
static void handle_sigint(SIGNAL_ARGS)
Definition cancel.c:153
#define _(x)
Definition elog.c:91
#define pqsignal
Definition port.h:547

References _, cancel_callback, cancel_not_sent_msg, cancel_sent_msg, fb(), handle_sigint(), and pqsignal.

Referenced by main(), psql_setup_cancel_handler(), runInitSteps(), and vacuuming_main().

Variable Documentation

◆ cancel_callback

void(* cancel_callback) (void) ( void  ) = NULL
static

Definition at line 68 of file cancel.c.

Referenced by handle_sigint(), and setup_cancel_handler().

◆ cancel_not_sent_msg

const char* cancel_not_sent_msg = NULL
static

Definition at line 50 of file cancel.c.

Referenced by handle_sigint(), and setup_cancel_handler().

◆ cancel_sent_msg

const char* cancel_sent_msg = NULL
static

Definition at line 49 of file cancel.c.

Referenced by handle_sigint(), and setup_cancel_handler().

◆ cancelConn

◆ CancelRequested