PostgreSQL Source Code  git master
toasting.h File Reference
#include "storage/lock.h"
Include dependency graph for toasting.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void NewRelationCreateToastTable (Oid relOid, Datum reloptions)
 
void NewHeapCreateToastTable (Oid relOid, Datum reloptions, LOCKMODE lockmode)
 
void AlterTableCreateToastTable (Oid relOid, Datum reloptions, LOCKMODE lockmode)
 
void BootstrapToastTable (char *relName, Oid toastOid, Oid toastIndexOid)
 

Function Documentation

◆ AlterTableCreateToastTable()

void AlterTableCreateToastTable ( Oid  relOid,
Datum  reloptions,
LOCKMODE  lockmode 
)

Definition at line 58 of file toasting.c.

References CheckAndCreateToastTable().

Referenced by ATRewriteCatalogs().

59 {
60  CheckAndCreateToastTable(relOid, reloptions, lockmode, true);
61 }
static void CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, bool check)
Definition: toasting.c:76

◆ BootstrapToastTable()

void BootstrapToastTable ( char *  relName,
Oid  toastOid,
Oid  toastIndexOid 
)

Definition at line 94 of file toasting.c.

References AccessExclusiveLock, create_toast_table(), elog, ereport, errcode(), errmsg(), ERROR, makeRangeVar(), NoLock, RelationData::rd_rel, table_close(), and table_openrv().

95 {
96  Relation rel;
97 
98  rel = table_openrv(makeRangeVar(NULL, relName, -1), AccessExclusiveLock);
99 
100  if (rel->rd_rel->relkind != RELKIND_RELATION &&
101  rel->rd_rel->relkind != RELKIND_MATVIEW)
102  ereport(ERROR,
103  (errcode(ERRCODE_WRONG_OBJECT_TYPE),
104  errmsg("\"%s\" is not a table or materialized view",
105  relName)));
106 
107  /* create_toast_table does all the work */
108  if (!create_toast_table(rel, toastOid, toastIndexOid, (Datum) 0,
109  AccessExclusiveLock, false))
110  elog(ERROR, "\"%s\" does not require a toast table",
111  relName);
112 
113  table_close(rel, NoLock);
114 }
void table_close(Relation relation, LOCKMODE lockmode)
Definition: table.c:167
int errcode(int sqlerrcode)
Definition: elog.c:698
Form_pg_class rd_rel
Definition: rel.h:109
static bool create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, Datum reloptions, LOCKMODE lockmode, bool check)
Definition: toasting.c:125
#define ERROR
Definition: elog.h:46
#define NoLock
Definition: lockdefs.h:34
uintptr_t Datum
Definition: postgres.h:411
Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode)
Definition: table.c:102
#define ereport(elevel,...)
Definition: elog.h:157
#define AccessExclusiveLock
Definition: lockdefs.h:45
int errmsg(const char *fmt,...)
Definition: elog.c:909
#define elog(elevel,...)
Definition: elog.h:232
RangeVar * makeRangeVar(char *schemaname, char *relname, int location)
Definition: makefuncs.c:422

◆ NewHeapCreateToastTable()

void NewHeapCreateToastTable ( Oid  relOid,
Datum  reloptions,
LOCKMODE  lockmode 
)

Definition at line 64 of file toasting.c.

References CheckAndCreateToastTable().

Referenced by make_new_heap().

65 {
66  CheckAndCreateToastTable(relOid, reloptions, lockmode, false);
67 }
static void CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, bool check)
Definition: toasting.c:76

◆ NewRelationCreateToastTable()

void NewRelationCreateToastTable ( Oid  relOid,
Datum  reloptions 
)

Definition at line 70 of file toasting.c.

References AccessExclusiveLock, and CheckAndCreateToastTable().

Referenced by create_ctas_internal(), and ProcessUtilitySlow().

71 {
72  CheckAndCreateToastTable(relOid, reloptions, AccessExclusiveLock, false);
73 }
static void CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, bool check)
Definition: toasting.c:76
#define AccessExclusiveLock
Definition: lockdefs.h:45