From 17d819c0939cf1422a913388f6066f3a72f6159a Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 6 Nov 1999 17:01:29 +0000
Subject: [PATCH] Fix for recusive exit call from Massimo.

---
 src/backend/storage/ipc/ipc.c | 11 +++++------
 src/bin/psql/sql_help.h       | 32 ++++++++++++++++----------------
 2 files changed, 21 insertions(+), 22 deletions(-)

diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c
index 2070f6fb5c6..2c10a8c5a5e 100644
--- a/src/backend/storage/ipc/ipc.c
+++ b/src/backend/storage/ipc/ipc.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.40 1999/10/10 16:53:51 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.41 1999/11/06 17:01:28 momjian Exp $
  *
  * NOTES
  *
@@ -115,14 +115,13 @@ proc_exit(int code)
 	TPRINTF(TRACE_VERBOSE, "proc_exit(%d) [#%d]", code, proc_exit_inprogress);
 
 	/*
-	 * If proc_exit is called too many times something bad is happenig, so
-	 * exit immediately.
+	 * If proc_exit is called too many times something bad is happening, so
+	 * exit immediately.  This is crafted in two if's for a reason.
 	 */
-	if (proc_exit_inprogress > 9)
-	{
+	if (proc_exit_inprogress == 9)
 		elog(ERROR, "infinite recursion in proc_exit");
+	if (proc_exit_inprogress >= 9)
 		goto exit;
-	}
 
 	/* ----------------
 	 *	if proc_exit_inprocess is true, then it means that we
diff --git a/src/bin/psql/sql_help.h b/src/bin/psql/sql_help.h
index 60d5a401478..65ca26fd36f 100644
--- a/src/bin/psql/sql_help.h
+++ b/src/bin/psql/sql_help.h
@@ -14,10 +14,6 @@ struct _helpStruct
 
 
 static struct _helpStruct QL_HELP[] = {
-    { "TRUNCATE",
-      "Empty a table",
-      "TRUNCATE [ TABLE ] name" },
-
     { "ABORT",
       "Aborts the current transaction",
       "ABORT [ WORK | TRANSACTION ]" },
@@ -42,6 +38,10 @@ static struct _helpStruct QL_HELP[] = {
       "Gives storage clustering advice to the server",
       "CLUSTER indexname ON table" },
 
+    { "COMMENT",
+      "Add comment to an object",
+      "COMMENT ON\n[\n  [ DATABASE | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ]\n  object_name |\n  COLUMN table_name.column_name|\n  AGGREGATE agg_name agg_type|\n  FUNCTION func_name (arg1, arg2, ...)|\n  OPERATOR op (leftoperand_type rightoperand_type) |\n  TRIGGER trigger_name ON table_name\n] IS 'text'" },
+
     { "COMMIT",
       "Commits the current transaction",
       "COMMIT [ WORK | TRANSACTION ]" },
@@ -118,10 +118,6 @@ static struct _helpStruct QL_HELP[] = {
       "Removes the definition of an aggregate function",
       "DROP AGGREGATE name type" },
 
-    { "FETCH",
-      "Gets rows using a cursor",
-      "FETCH [ selector ] [ count ] { IN | FROM } cursor\nFETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor" },
-
     { "DROP DATABASE",
       "Destroys an existing database",
       "DROP DATABASE name" },
@@ -170,10 +166,18 @@ static struct _helpStruct QL_HELP[] = {
       "Removes an existing view from a database",
       "DROP VIEW name" },
 
+    { "END",
+      "Commits the current transaction",
+      "END [ WORK | TRANSACTION ]" },
+
     { "EXPLAIN",
       "Shows statement execution details",
       "EXPLAIN [ VERBOSE ] query" },
 
+    { "FETCH",
+      "Gets rows using a cursor",
+      "FETCH [ selector ] [ count ] { IN | FROM } cursor\nFETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor" },
+
     { "GRANT",
       "Grants access privilege to a user, a group or all users",
       "GRANT privilege [, ...] ON object [, ...]\n    TO { PUBLIC | GROUP group | username }" },
@@ -230,6 +234,10 @@ static struct _helpStruct QL_HELP[] = {
       "Shows run-time parameters for session",
       "SHOW keyword" },
 
+    { "TRUNCATE",
+      "Empty a table",
+      "TRUNCATE [ TABLE ] name" },
+
     { "UNLISTEN",
       "Stop listening for notification",
       "UNLISTEN { notifyname | * }" },
@@ -242,14 +250,6 @@ static struct _helpStruct QL_HELP[] = {
       "Clean and analyze a Postgres database",
       "VACUUM [ VERBOSE ] [ ANALYZE ] [ table ]\nVACUUM [ VERBOSE ] ANALYZE [ ER\">tBLE> [ (column [, ...] ) ] ]" },
 
-    { "END",
-      "Commits the current transaction",
-      "END [ WORK | TRANSACTION ]" },
-
-    { "COMMENT",
-      "Add comment to an object",
-      "COMMENT ON\n[\n  [ DATABASE | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ]\n  object_name |\n  COLUMN table_name.column_name|\n  AGGREGATE agg_name agg_type|\n  FUNCTION func_name (arg1, arg2, ...)|\n  OPERATOR op (leftoperand_type rightoperand_type) |\n  TRIGGER trigger_name ON table_name\n] IS 'text'" },
-
 
     { NULL, NULL, NULL }    /* End of list marker */
 };
-- 
GitLab