100 if (rel->
rd_rel->relkind != RELKIND_RELATION &&
101 rel->
rd_rel->relkind != RELKIND_MATVIEW)
103 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
104 errmsg(
"\"%s\" is not a table or materialized view",
110 elog(
ERROR,
"\"%s\" does not require a toast table",
131 bool shared_relation;
132 bool mapped_relation;
140 Oid collationObjectId[2];
141 Oid classObjectId[2];
190 elog(
ERROR,
"AccessExclusiveLock required to add toast table.");
195 snprintf(toast_relname,
sizeof(toast_relname),
196 "pg_toast_%u", relOid);
197 snprintf(toast_idxname,
sizeof(toast_idxname),
198 "pg_toast_%u_index", relOid);
236 namespaceid = PG_TOAST_NAMESPACE;
239 shared_relation = rel->
rd_rel->relisshared;
246 rel->
rd_rel->reltablespace,
255 rel->
rd_rel->relpersistence,
303 indexInfo->
ii_Am = BTREE_AM_OID;
310 classObjectId[0] = OID_BTREE_OPS_OID;
311 classObjectId[1] = INT4_BTREE_OPS_OID;
321 rel->
rd_rel->reltablespace,
322 collationObjectId, classObjectId, coloptions, (
Datum) 0,
334 elog(
ERROR,
"cache lookup failed for relation %u", relOid);
360 baseobject.
classId = RelationRelationId;
363 toastobject.
classId = RelationRelationId;
387 if (rel->
rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
#define list_make2(x1, x2)
bool IsCatalogRelation(Relation relation)
void table_close(Relation relation, LOCKMODE lockmode)
void AlterTableCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode)
TupleDesc CreateTemplateTupleDesc(int natts)
Oid binary_upgrade_next_toast_pg_class_oid
bool isTempOrTempToastNamespace(Oid namespaceId)
#define TupleDescAttr(tupdesc, i)
ExprState * ii_PredicateState
int errcode(int sqlerrcode)
void recordDependencyOn(const ObjectAddress *depender, const ObjectAddress *referenced, DependencyType behavior)
void heap_freetuple(HeapTuple htup)
Oid index_create(Relation heapRelation, const char *indexRelationName, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, Oid relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId, Oid tableSpaceId, Oid *collationObjectId, Oid *classObjectId, int16 *coloptions, Datum reloptions, bits16 flags, bits16 constr_flags, bool allow_system_table_mods, bool is_internal, Oid *constraintId)
void NewRelationCreateToastTable(Oid relOid, Datum reloptions)
#define OidIsValid(objectId)
static bool create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, Datum reloptions, LOCKMODE lockmode, bool check)
void BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid)
List * ii_ExpressionsState
static void CheckAndCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode, bool check)
#define ObjectIdGetDatum(X)
Oid GetTempToastNamespace(void)
static bool needs_toast_table(Relation rel)
MemoryContext CurrentMemoryContext
void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
#define RelationIsMapped(relation)
void CommandCounterIncrement(void)
#define INDEX_CREATE_IS_PRIMARY
Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode)
#define ereport(elevel,...)
#define HeapTupleIsValid(tuple)
#define Assert(condition)
Oid heap_create_with_catalog(const char *relname, Oid relnamespace, Oid reltablespace, Oid relid, Oid reltypeid, Oid reloftypeid, Oid ownerid, Oid accessmtd, TupleDesc tupdesc, List *cooked_constraints, char relkind, char relpersistence, bool shared_relation, bool mapped_relation, OnCommitAction oncommit, Datum reloptions, bool use_user_acl, bool allow_system_table_mods, bool is_internal, Oid relrewrite, ObjectAddress *typaddress)
void CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
#define IsBootstrapProcessingMode()
FormData_pg_class * Form_pg_class
#define SearchSysCacheCopy1(cacheId, key1)
#define AccessExclusiveLock
#define InvalidCompressionMethod
int errmsg(const char *fmt,...)
void heap_inplace_update(Relation relation, HeapTuple tuple)
static bool table_relation_needs_toast_table(Relation rel)
static Oid table_relation_toast_am(Relation rel)
AttrNumber ii_IndexAttrNumbers[INDEX_MAX_KEYS]
uint16 * ii_ExclusionStrats
Relation table_open(Oid relationId, LOCKMODE lockmode)
#define RelationGetRelid(relation)
RangeVar * makeRangeVar(char *schemaname, char *relname, int location)
Datum * ii_OpclassOptions
void NewHeapCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode)