X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=src%2Finclude%2Fcatalog%2Fheap.h;h=09516ed0215a8cef1587325a4099f129d5d0995b;hb=984a6ced3ece409e97b74ce163297b8193eeeb6c;hp=643b5198f0977abd31eec3889cd9fb6ce3f0b91b;hpb=1d8bbfd2e7cfb72cbe4d5c5d4fa650a28dedac0b;p=postgresql diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h index 643b5198f0..09516ed021 100644 --- a/src/include/catalog/heap.h +++ b/src/include/catalog/heap.h @@ -1,31 +1,100 @@ /*------------------------------------------------------------------------- * - * heap.h-- - * prototypes for functions in lib/catalog/heap.c + * heap.h + * prototypes for functions in backend/catalog/heap.c * * - * Copyright (c) 1994, Regents of the University of California + * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: heap.h,v 1.4 1997/08/19 21:37:47 momjian Exp $ + * $PostgreSQL: pgsql/src/include/catalog/heap.h,v 1.77 2006/03/03 03:30:53 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef HEAP_H #define HEAP_H -#include +#include "catalog/pg_attribute.h" +#include "nodes/parsenodes.h" +#include "parser/parse_node.h" +#include "utils/rel.h" -extern Relation heap_creatr(char *relname, unsigned smgr, TupleDesc att); -extern Oid heap_create(char relname[], - char *typename, - int arch, - unsigned smgr, TupleDesc tupdesc); +typedef struct RawColumnDefault +{ + AttrNumber attnum; /* attribute to attach default to */ + Node *raw_default; /* default value (untransformed parse tree) */ +} RawColumnDefault; -extern void heap_destroy(char relname[]); -extern void heap_destroyr(Relation r); - -extern void InitTempRelList(void); -extern void DestroyTempRels(void); +typedef struct CookedConstraint +{ + ConstrType contype; /* CONSTR_DEFAULT or CONSTR_CHECK */ + char *name; /* name, or NULL if none */ + AttrNumber attnum; /* which attr (only for DEFAULT) */ + Node *expr; /* transformed default or check expr */ +} CookedConstraint; -#endif /* HEAP_H */ +extern Relation heap_create(const char *relname, + Oid relnamespace, + Oid reltablespace, + Oid relid, + TupleDesc tupDesc, + char relkind, + bool shared_relation, + bool allow_system_table_mods); + +extern Oid heap_create_with_catalog(const char *relname, + Oid relnamespace, + Oid reltablespace, + Oid relid, + Oid ownerid, + TupleDesc tupdesc, + char relkind, + bool shared_relation, + bool oidislocal, + int oidinhcount, + OnCommitAction oncommit, + bool allow_system_table_mods); + +extern void heap_drop_with_catalog(Oid relid); + +extern void heap_truncate(List *relids); + +extern void heap_truncate_check_FKs(List *relations, bool tempTables); + +extern List *heap_truncate_find_FKs(List *relationIds); + +extern List *AddRelationRawConstraints(Relation rel, + List *rawColDefaults, + List *rawConstraints); + +extern void StoreAttrDefault(Relation rel, AttrNumber attnum, char *adbin); + +extern Node *cookDefault(ParseState *pstate, + Node *raw_default, + Oid atttypid, + int32 atttypmod, + char *attname); + +extern int RemoveRelConstraints(Relation rel, const char *constrName, + DropBehavior behavior); + +extern void DeleteRelationTuple(Oid relid); +extern void DeleteAttributeTuples(Oid relid); +extern void RemoveAttributeById(Oid relid, AttrNumber attnum); +extern void RemoveAttrDefault(Oid relid, AttrNumber attnum, + DropBehavior behavior, bool complain); +extern void RemoveAttrDefaultById(Oid attrdefId); +extern void RemoveStatistics(Oid relid, AttrNumber attnum); + +extern Form_pg_attribute SystemAttributeDefinition(AttrNumber attno, + bool relhasoids); + +extern Form_pg_attribute SystemAttributeByName(const char *attname, + bool relhasoids); + +extern void CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind); + +extern void CheckAttributeType(const char *attname, Oid atttypid); + +#endif /* HEAP_H */