PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
discard.c File Reference
#include "postgres.h"
#include "access/xact.h"
#include "catalog/namespace.h"
#include "commands/async.h"
#include "commands/discard.h"
#include "commands/prepare.h"
#include "commands/sequence.h"
#include "utils/guc.h"
#include "utils/portal.h"
Include dependency graph for discard.c:

Go to the source code of this file.

Functions

static void DiscardAll (bool isTopLevel)
 
void DiscardCommand (DiscardStmt *stmt, bool isTopLevel)
 

Function Documentation

static void DiscardAll ( bool  isTopLevel)
static

Definition at line 57 of file discard.c.

References Async_UnlistenAll(), DropAllPreparedStatements(), LockReleaseAll(), NIL, PortalHashTableDeleteAll(), PreventTransactionChain(), ResetAllOptions(), ResetPlanCache(), ResetSequenceCaches(), ResetTempTableNamespace(), SetPGVariable(), and USER_LOCKMETHOD.

Referenced by DiscardCommand().

58 {
59  /*
60  * Disallow DISCARD ALL in a transaction block. This is arguably
61  * inconsistent (we don't make a similar check in the command sequence
62  * that DISCARD ALL is equivalent to), but the idea is to catch mistakes:
63  * DISCARD ALL inside a transaction block would leave the transaction
64  * still uncommitted.
65  */
66  PreventTransactionChain(isTopLevel, "DISCARD ALL");
67 
68  /* Closing portals might run user-defined code, so do that first. */
70  SetPGVariable("session_authorization", NIL, false);
78 }
void ResetTempTableNamespace(void)
Definition: namespace.c:4047
#define NIL
Definition: pg_list.h:69
void ResetAllOptions(void)
Definition: guc.c:4875
void ResetPlanCache(void)
Definition: plancache.c:1860
#define USER_LOCKMETHOD
Definition: lock.h:129
void ResetSequenceCaches(void)
Definition: sequence.c:1927
void PortalHashTableDeleteAll(void)
Definition: portalmem.c:591
void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks)
Definition: lock.c:2014
void Async_UnlistenAll(void)
Definition: async.c:667
void SetPGVariable(const char *name, List *args, bool is_local)
Definition: guc.c:7440
void DropAllPreparedStatements(void)
Definition: prepare.c:600
void PreventTransactionChain(bool isTopLevel, const char *stmtType)
Definition: xact.c:3157
void DiscardCommand ( DiscardStmt stmt,
bool  isTopLevel 
)

Definition at line 31 of file discard.c.

References DISCARD_ALL, DISCARD_PLANS, DISCARD_SEQUENCES, DISCARD_TEMP, DiscardAll(), elog, ERROR, ResetPlanCache(), ResetSequenceCaches(), ResetTempTableNamespace(), and DiscardStmt::target.

Referenced by standard_ProcessUtility().

32 {
33  switch (stmt->target)
34  {
35  case DISCARD_ALL:
36  DiscardAll(isTopLevel);
37  break;
38 
39  case DISCARD_PLANS:
41  break;
42 
43  case DISCARD_SEQUENCES:
45  break;
46 
47  case DISCARD_TEMP:
49  break;
50 
51  default:
52  elog(ERROR, "unrecognized DISCARD target: %d", stmt->target);
53  }
54 }
void ResetTempTableNamespace(void)
Definition: namespace.c:4047
#define ERROR
Definition: elog.h:43
void ResetPlanCache(void)
Definition: plancache.c:1860
void ResetSequenceCaches(void)
Definition: sequence.c:1927
DiscardMode target
Definition: parsenodes.h:3176
static void DiscardAll(bool isTopLevel)
Definition: discard.c:57
#define elog
Definition: elog.h:219