diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/libpq/libpq.h | 3 | ||||
| -rw-r--r-- | src/include/miscadmin.h | 13 | ||||
| -rw-r--r-- | src/include/tcop/fastpath.h | 1 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/include/libpq/libpq.h b/src/include/libpq/libpq.h index 50dd1f081a..af4ba2ab07 100644 --- a/src/include/libpq/libpq.h +++ b/src/include/libpq/libpq.h @@ -78,6 +78,9 @@ extern void TouchSocketFiles(void); extern void pq_init(void); extern int pq_getbytes(char *s, size_t len); extern int pq_getstring(StringInfo s); +extern void pq_startmsgread(void); +extern void pq_endmsgread(void); +extern bool pq_is_reading_msg(void); extern int pq_getmessage(StringInfo s, int maxlen); extern int pq_getbyte(void); extern int pq_peekbyte(void); diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 6e33a17212..6c68da5f64 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -52,6 +52,10 @@ * will be held off until CHECK_FOR_INTERRUPTS() is done outside any * HOLD_INTERRUPTS() ... RESUME_INTERRUPTS() section. * + * There is also a mechanism to prevent query cancel interrupts, while still + * allowing die interrupts: HOLD_CANCEL_INTERRUPTS() and + * RESUME_CANCEL_INTERRUPTS(). + * * Special mechanisms are used to let an interrupt be accepted when we are * waiting for a lock or when we are waiting for command input (but, of * course, only if the interrupt holdoff counter is zero). See the @@ -82,6 +86,7 @@ extern volatile bool ClientConnectionLost; /* these are marked volatile because they are examined by signal handlers: */ extern PGDLLIMPORT volatile bool ImmediateInterruptOK; extern PGDLLIMPORT volatile uint32 InterruptHoldoffCount; +extern PGDLLIMPORT volatile uint32 QueryCancelHoldoffCount; extern PGDLLIMPORT volatile uint32 CritSectionCount; /* in tcop/postgres.c */ @@ -114,6 +119,14 @@ do { \ InterruptHoldoffCount--; \ } while(0) +#define HOLD_CANCEL_INTERRUPTS() (QueryCancelHoldoffCount++) + +#define RESUME_CANCEL_INTERRUPTS() \ +do { \ + Assert(QueryCancelHoldoffCount > 0); \ + QueryCancelHoldoffCount--; \ +} while(0) + #define START_CRIT_SECTION() (CritSectionCount++) #define END_CRIT_SECTION() \ diff --git a/src/include/tcop/fastpath.h b/src/include/tcop/fastpath.h index 6286c0a687..47028cb113 100644 --- a/src/include/tcop/fastpath.h +++ b/src/include/tcop/fastpath.h @@ -15,6 +15,7 @@ #include "lib/stringinfo.h" +extern int GetOldFunctionMessage(StringInfo buf); extern int HandleFunctionRequest(StringInfo msgBuf); #endif /* FASTPATH_H */ |
