24#include "utils/fmgroids.h"
36 Node *expr,
bool is_internal)
42 static bool nulls[Natts_pg_attrdef] = {
false,
false,
false,
false};
46 Datum valuesAtt[Natts_pg_attribute] = {0};
47 bool nullsAtt[Natts_pg_attribute] = {0};
48 bool replacesAtt[Natts_pg_attribute] = {0};
74 defobject.
classId = AttrDefaultRelationId;
94 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
97 attgenerated = attStruct->attgenerated;
99 valuesAtt[Anum_pg_attribute_atthasdef - 1] =
BoolGetDatum(
true);
100 replacesAtt[Anum_pg_attribute_atthasdef - 1] =
true;
103 valuesAtt, nullsAtt, replacesAtt);
116 colobject.
classId = RelationRelationId;
164 Anum_pg_attrdef_adrelid,
168 Anum_pg_attrdef_adnum,
181 object.classId = AttrDefaultRelationId;
182 object.objectId = attrtuple->oid;
183 object.objectSubId = 0;
194 if (complain && !found)
195 elog(
ERROR,
"could not find attrdef tuple for relation %u attnum %d",
232 elog(
ERROR,
"could not find tuple for attrdef %u", attrdefId);
253 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
288 Anum_pg_attrdef_adrelid,
293 Anum_pg_attrdef_adnum,
304 result = atdform->oid;
340 result.
classId = RelationRelationId;
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
Oid GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn)
void performDeletion(const ObjectAddress *object, DropBehavior behavior, int flags)
void recordDependencyOnSingleRelExpr(const ObjectAddress *depender, Node *expr, Oid relId, DependencyType behavior, DependencyType self_behavior, bool reverse_self)
#define PERFORM_DELETION_INTERNAL
void systable_endscan(SysScanDesc sysscan)
HeapTuple systable_getnext(SysScanDesc sysscan)
SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key)
HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, const Datum *replValues, const bool *replIsnull, const bool *doReplace)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
void heap_freetuple(HeapTuple htup)
#define HeapTupleIsValid(tuple)
static void * GETSTRUCT(const HeapTupleData *tuple)
void CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
void CatalogTupleInsert(Relation heapRel, HeapTuple tup)
void CatalogTupleDelete(Relation heapRel, ItemPointer tid)
#define AccessExclusiveLock
void pfree(void *pointer)
#define InvokeObjectPostCreateHookArg(classId, objectId, subId, is_internal)
const ObjectAddress InvalidObjectAddress
char * nodeToString(const void *obj)
Oid StoreAttrDefault(Relation rel, AttrNumber attnum, Node *expr, bool is_internal)
void RemoveAttrDefaultById(Oid attrdefId)
Oid GetAttrDefaultOid(Oid relid, AttrNumber attnum)
ObjectAddress GetAttrDefaultColumnAddress(Oid attrdefoid)
void RemoveAttrDefault(Oid relid, AttrNumber attnum, DropBehavior behavior, bool complain, bool internal)
FormData_pg_attrdef * Form_pg_attrdef
FormData_pg_attribute * Form_pg_attribute
void recordDependencyOn(const ObjectAddress *depender, const ObjectAddress *referenced, DependencyType behavior)
static Datum Int16GetDatum(int16 X)
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
static Pointer DatumGetPointer(Datum X)
#define RelationGetRelid(relation)
#define RelationGetDescr(relation)
void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument)
void relation_close(Relation relation, LOCKMODE lockmode)
Relation relation_open(Oid relationId, LOCKMODE lockmode)
#define BTEqualStrategyNumber
#define SearchSysCacheCopy2(cacheId, key1, key2)
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)