aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2008-04-17 20:56:41 +0000
committerBruce Momjian <bruce@momjian.us>2008-04-17 20:56:41 +0000
commitc4fd93b3f3626a613e3aada7def37835e7cef87f (patch)
treeff965d2afaa7ba409333a7bc7cc6f60d06c21e06
parentc5e4e91a96aa27f7dee05a763122ad66c5c69282 (diff)
downloadpostgresql-c4fd93b3f3626a613e3aada7def37835e7cef87f.tar.gz
postgresql-c4fd93b3f3626a613e3aada7def37835e7cef87f.zip
Re-enable pg_terminate_backend() using SIGTERM. SIGTERM testing still
needed.
-rw-r--r--doc/src/sgml/func.sgml19
-rw-r--r--doc/src/sgml/runtime.sgml10
-rw-r--r--src/backend/utils/adt/misc.c19
-rw-r--r--src/include/catalog/pg_proc.h4
-rw-r--r--src/include/utils/builtins.h3
5 files changed, 36 insertions, 19 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 23a758cd02e..7e120bc8621 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.432 2008/04/15 20:28:46 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.433 2008/04/17 20:56:41 momjian Exp $ -->
<chapter id="functions">
<title>Functions and Operators</title>
@@ -11849,6 +11849,9 @@ SELECT set_config('log_statement_stats', 'off', false);
<primary>pg_cancel_backend</primary>
</indexterm>
<indexterm>
+ <primary>pg_terminate_backend</primary>
+ </indexterm>
+ <indexterm>
<primary>pg_reload_conf</primary>
</indexterm>
<indexterm>
@@ -11885,6 +11888,13 @@ SELECT set_config('log_statement_stats', 'off', false);
</row>
<row>
<entry>
+ <literal><function>pg_terminate_backend</function>(<parameter>pid</parameter> <type>int</>)</literal>
+ </entry>
+ <entry><type>boolean</type></entry>
+ <entry>Terminate a backend</entry>
+ </row>
+ <row>
+ <entry>
<literal><function>pg_reload_conf</function>()</literal>
</entry>
<entry><type>boolean</type></entry>
@@ -11907,9 +11917,10 @@ SELECT set_config('log_statement_stats', 'off', false);
</para>
<para>
- <function>pg_cancel_backend</> sends a query cancel
- (<systemitem>SIGINT</>) signal to a backend process identified by
- process ID. The process ID of an active backend can be found from
+ <function>pg_cancel_backend</> and <function>pg_terminate_backend</>
+ send signals (<systemitem>SIGINT</> or <systemitem>SIGTERM</>
+ respectively) to backend processes identified by process ID.
+ The process ID of an active backend can be found from
the <structfield>procpid</structfield> column in the
<structname>pg_stat_activity</structname> view, or by listing the
<command>postgres</command> processes on the server with
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index eb9b937a818..63259faff5a 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.413 2008/04/15 20:28:46 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.414 2008/04/17 20:56:41 momjian Exp $ -->
<chapter Id="runtime">
<title>Operating System Environment</title>
@@ -1372,6 +1372,14 @@ $ <userinput>kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`</userinput
well.
</para>
</important>
+
+ <para>
+ To terminate a session while allowing other sessions to continue, use
+ <function>pg_terminate_backend()</> (<xref
+ linkend="functions-admin-signal-table">) or send a
+ <systemitem>SIGTERM</> signal to the child process associated with
+ the session.
+ </para>
</sect1>
<sect1 id="preventing-server-spoofing">
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
index 5542f877449..f99a07a9998 100644
--- a/src/backend/utils/adt/misc.c
+++ b/src/backend/utils/adt/misc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.61 2008/04/15 20:28:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.62 2008/04/17 20:56:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -129,6 +129,12 @@ pg_cancel_backend(PG_FUNCTION_ARGS)
}
Datum
+pg_terminate_backend(PG_FUNCTION_ARGS)
+{
+ PG_RETURN_BOOL(pg_signal_backend(PG_GETARG_INT32(0), SIGTERM));
+}
+
+Datum
pg_reload_conf(PG_FUNCTION_ARGS)
{
if (!superuser())
@@ -169,17 +175,6 @@ pg_rotate_logfile(PG_FUNCTION_ARGS)
PG_RETURN_BOOL(true);
}
-#ifdef NOT_USED
-
-/* Disabled in 8.0 due to reliability concerns; FIXME someday */
-Datum
-pg_terminate_backend(PG_FUNCTION_ARGS)
-{
- PG_RETURN_INT32(pg_signal_backend(PG_GETARG_INT32(0), SIGTERM));
-}
-#endif
-
-
/* Function to find out which databases make use of a tablespace */
typedef struct
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index cb2815ce6ed..90b55034135 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.491 2008/04/15 20:28:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.492 2008/04/17 20:56:41 momjian Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
@@ -3157,6 +3157,8 @@ DESCR("is schema another session's temp schema?");
DATA(insert OID = 2171 ( pg_cancel_backend PGNSP PGUID 12 1 0 f f t f v 1 16 "23" _null_ _null_ _null_ pg_cancel_backend - _null_ _null_ ));
DESCR("cancel a server process' current query");
+DATA(insert OID = 2096 ( pg_terminate_backend PGNSP PGUID 12 1 0 f f t f v 1 16 "23" _null_ _null_ _null_ pg_terminate_backend - _null_ _null_ ));
+DESCR("terminate a server process");
DATA(insert OID = 2172 ( pg_start_backup PGNSP PGUID 12 1 0 f f t f v 1 25 "25" _null_ _null_ _null_ pg_start_backup - _null_ _null_ ));
DESCR("prepare for taking an online backup");
DATA(insert OID = 2173 ( pg_stop_backup PGNSP PGUID 12 1 0 f f t f v 0 25 "" _null_ _null_ _null_ pg_stop_backup - _null_ _null_ ));
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 8fcdb2c099f..1a652c6de3d 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.314 2008/04/15 20:28:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.315 2008/04/17 20:56:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -416,6 +416,7 @@ extern Datum nonnullvalue(PG_FUNCTION_ARGS);
extern Datum current_database(PG_FUNCTION_ARGS);
extern Datum current_query(PG_FUNCTION_ARGS);
extern Datum pg_cancel_backend(PG_FUNCTION_ARGS);
+extern Datum pg_terminate_backend(PG_FUNCTION_ARGS);
extern Datum pg_reload_conf(PG_FUNCTION_ARGS);
extern Datum pg_tablespace_databases(PG_FUNCTION_ARGS);
extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS);