/*-------------------------------------------------------------------------
*
* heap.h
- * prototypes for functions in lib/catalog/heap.c
+ * 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.23 1999/10/15 01:49:44 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 "catalog/pg_attribute.h"
+#include "nodes/parsenodes.h"
+#include "parser/parse_node.h"
#include "utils/rel.h"
+
typedef struct RawColumnDefault
{
AttrNumber attnum; /* attribute to attach default to */
Node *raw_default; /* default value (untransformed parse tree) */
} RawColumnDefault;
-extern Oid RelnameFindRelid(char *relname);
-extern Relation heap_create(char *relname, TupleDesc att,
- bool isnoname, bool istemp);
+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;
+
+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 Oid heap_create_with_catalog(char *relname,
- TupleDesc tupdesc, char relkind, bool istemp);
+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 void heap_destroy_with_catalog(char *relname);
-extern void heap_truncate(char *relname);
-extern void heap_destroy(Relation rel);
+extern Form_pg_attribute SystemAttributeDefinition(AttrNumber attno,
+ bool relhasoids);
-extern void CreateComments(Oid object, char *comments);
-extern void DeleteComments(Oid object);
+extern Form_pg_attribute SystemAttributeByName(const char *attname,
+ bool relhasoids);
-extern void AddRelationRawConstraints(Relation rel,
- List *rawColDefaults,
- List *rawConstraints);
+extern void CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind);
-extern void InitNoNameRelList(void);
-extern void DestroyNoNameRels(void);
+extern void CheckAttributeType(const char *attname, Oid atttypid);
-#endif /* HEAP_H */
+#endif /* HEAP_H */