mirror of
https://github.com/postgres/postgres.git
synced 2025-06-23 14:01:44 +03:00
Fix for recusive exit call from Massimo.
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
*
|
*
|
||||||
@ -115,14 +115,13 @@ proc_exit(int code)
|
|||||||
TPRINTF(TRACE_VERBOSE, "proc_exit(%d) [#%d]", code, proc_exit_inprogress);
|
TPRINTF(TRACE_VERBOSE, "proc_exit(%d) [#%d]", code, proc_exit_inprogress);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If proc_exit is called too many times something bad is happenig, so
|
* If proc_exit is called too many times something bad is happening, so
|
||||||
* exit immediately.
|
* 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");
|
elog(ERROR, "infinite recursion in proc_exit");
|
||||||
|
if (proc_exit_inprogress >= 9)
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* if proc_exit_inprocess is true, then it means that we
|
* if proc_exit_inprocess is true, then it means that we
|
||||||
|
@ -14,10 +14,6 @@ struct _helpStruct
|
|||||||
|
|
||||||
|
|
||||||
static struct _helpStruct QL_HELP[] = {
|
static struct _helpStruct QL_HELP[] = {
|
||||||
{ "TRUNCATE",
|
|
||||||
"Empty a table",
|
|
||||||
"TRUNCATE [ TABLE ] name" },
|
|
||||||
|
|
||||||
{ "ABORT",
|
{ "ABORT",
|
||||||
"Aborts the current transaction",
|
"Aborts the current transaction",
|
||||||
"ABORT [ WORK | TRANSACTION ]" },
|
"ABORT [ WORK | TRANSACTION ]" },
|
||||||
@ -42,6 +38,10 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"Gives storage clustering advice to the server",
|
"Gives storage clustering advice to the server",
|
||||||
"CLUSTER indexname ON table" },
|
"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",
|
{ "COMMIT",
|
||||||
"Commits the current transaction",
|
"Commits the current transaction",
|
||||||
"COMMIT [ WORK | TRANSACTION ]" },
|
"COMMIT [ WORK | TRANSACTION ]" },
|
||||||
@ -118,10 +118,6 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"Removes the definition of an aggregate function",
|
"Removes the definition of an aggregate function",
|
||||||
"DROP AGGREGATE name type" },
|
"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",
|
{ "DROP DATABASE",
|
||||||
"Destroys an existing database",
|
"Destroys an existing database",
|
||||||
"DROP DATABASE name" },
|
"DROP DATABASE name" },
|
||||||
@ -170,10 +166,18 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"Removes an existing view from a database",
|
"Removes an existing view from a database",
|
||||||
"DROP VIEW name" },
|
"DROP VIEW name" },
|
||||||
|
|
||||||
|
{ "END",
|
||||||
|
"Commits the current transaction",
|
||||||
|
"END [ WORK | TRANSACTION ]" },
|
||||||
|
|
||||||
{ "EXPLAIN",
|
{ "EXPLAIN",
|
||||||
"Shows statement execution details",
|
"Shows statement execution details",
|
||||||
"EXPLAIN [ VERBOSE ] query" },
|
"EXPLAIN [ VERBOSE ] query" },
|
||||||
|
|
||||||
|
{ "FETCH",
|
||||||
|
"Gets rows using a cursor",
|
||||||
|
"FETCH [ selector ] [ count ] { IN | FROM } cursor\nFETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor" },
|
||||||
|
|
||||||
{ "GRANT",
|
{ "GRANT",
|
||||||
"Grants access privilege to a user, a group or all users",
|
"Grants access privilege to a user, a group or all users",
|
||||||
"GRANT privilege [, ...] ON object [, ...]\n TO { PUBLIC | GROUP group | username }" },
|
"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",
|
"Shows run-time parameters for session",
|
||||||
"SHOW keyword" },
|
"SHOW keyword" },
|
||||||
|
|
||||||
|
{ "TRUNCATE",
|
||||||
|
"Empty a table",
|
||||||
|
"TRUNCATE [ TABLE ] name" },
|
||||||
|
|
||||||
{ "UNLISTEN",
|
{ "UNLISTEN",
|
||||||
"Stop listening for notification",
|
"Stop listening for notification",
|
||||||
"UNLISTEN { notifyname | * }" },
|
"UNLISTEN { notifyname | * }" },
|
||||||
@ -242,14 +250,6 @@ static struct _helpStruct QL_HELP[] = {
|
|||||||
"Clean and analyze a Postgres database",
|
"Clean and analyze a Postgres database",
|
||||||
"VACUUM [ VERBOSE ] [ ANALYZE ] [ table ]\nVACUUM [ VERBOSE ] ANALYZE [ ER\">tBLE> [ (column [, ...] ) ] ]" },
|
"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 */
|
{ NULL, NULL, NULL } /* End of list marker */
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user