diff --git a/doc/src/sgml/ref/discard.sgml b/doc/src/sgml/ref/discard.sgml index a4ca919394c..9572d5ab858 100644 --- a/doc/src/sgml/ref/discard.sgml +++ b/doc/src/sgml/ref/discard.sgml @@ -1,5 +1,5 @@ @@ -70,15 +70,16 @@ DISCARD { ALL | PLANS | TEMPORARY | TEMP } Releases all temporary resources associated with the current - session and resets the session to its initial state. This has - the same effect as executing the following sequence of - statements: + session and resets the session to its initial state. + Currently, this has the same effect as executing the following sequence + of statements: SET SESSION AUTHORIZATION DEFAULT; RESET ALL; DEALLOCATE ALL; CLOSE ALL; UNLISTEN *; +SELECT pg_advisory_unlock_all(); DISCARD PLANS; DISCARD TEMP; diff --git a/src/backend/commands/discard.c b/src/backend/commands/discard.c index 65d910c3209..adf663f6ee9 100644 --- a/src/backend/commands/discard.c +++ b/src/backend/commands/discard.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/discard.c,v 1.4 2008/01/01 19:45:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/discard.c,v 1.4.2.1 2008/11/27 00:34:49 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -19,6 +19,7 @@ #include "commands/discard.h" #include "commands/prepare.h" #include "commands/variable.h" +#include "storage/lock.h" #include "utils/plancache.h" #include "utils/portal.h" @@ -66,6 +67,7 @@ DiscardAll(bool isTopLevel) DropAllPreparedStatements(); PortalHashTableDeleteAll(); Async_UnlistenAll(); + LockReleaseAll(USER_LOCKMETHOD, true); ResetPlanCache(); ResetTempTableNamespace(); }