PostgreSQL Source Code git master
Loading...
Searching...
No Matches
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 "storage/lock.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

◆ DiscardAll()

static void DiscardAll ( bool  isTopLevel)
static

Definition at line 58 of file discard.c.

59{
60 /*
61 * Disallow DISCARD ALL in a transaction block. This is arguably
62 * inconsistent (we don't make a similar check in the command sequence
63 * that DISCARD ALL is equivalent to), but the idea is to catch mistakes:
64 * DISCARD ALL inside a transaction block would leave the transaction
65 * still uncommitted.
66 */
68
69 /* Closing portals might run user-defined code, so do that first. */
71 SetPGVariable("session_authorization", NIL, false);
79}
void Async_UnlistenAll(void)
Definition async.c:1075
void DropAllPreparedStatements(void)
Definition prepare.c:542
void ResetSequenceCaches(void)
Definition sequence.c:1906
void ResetAllOptions(void)
Definition guc.c:1910
void SetPGVariable(const char *name, List *args, bool is_local)
Definition guc_funcs.c:343
void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks)
Definition lock.c:2316
#define USER_LOCKMETHOD
Definition locktag.h:26
void ResetTempTableNamespace(void)
Definition namespace.c:4716
#define NIL
Definition pg_list.h:68
void ResetPlanCache(void)
Definition plancache.c:2328
void PortalHashTableDeleteAll(void)
Definition portalmem.c:608
static int fb(int x)
void PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
Definition xact.c:3698

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

Referenced by DiscardCommand().

◆ DiscardCommand()

void DiscardCommand ( DiscardStmt stmt,
bool  isTopLevel 
)

Definition at line 32 of file discard.c.

33{
34 switch (stmt->target)
35 {
36 case DISCARD_ALL:
38 break;
39
40 case DISCARD_PLANS:
42 break;
43
46 break;
47
48 case DISCARD_TEMP:
50 break;
51
52 default:
53 elog(ERROR, "unrecognized DISCARD target: %d", stmt->target);
54 }
55}
static void DiscardAll(bool isTopLevel)
Definition discard.c:58
#define ERROR
Definition elog.h:40
#define elog(elevel,...)
Definition elog.h:228
#define stmt
@ DISCARD_ALL
@ DISCARD_PLANS
@ DISCARD_SEQUENCES
@ DISCARD_TEMP

References DISCARD_ALL, DISCARD_PLANS, DISCARD_SEQUENCES, DISCARD_TEMP, DiscardAll(), elog, ERROR, fb(), ResetPlanCache(), ResetSequenceCaches(), ResetTempTableNamespace(), and stmt.

Referenced by standard_ProcessUtility().