blob: 41f7ffef5e0dbf4ff2ddb12ed11adadad9aede71 [file] [log] [blame]
/*-------------------------------------------------------------------------
*
* pg_namespace.h
* definition of the system "namespace" relation (pg_namespace)
* along with the relation's initial contents.
*
*
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/catalog/pg_namespace.h,v 1.20 2006/03/05 15:58:54 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
* information from the DATA() statements.
*
*-------------------------------------------------------------------------
*/
#ifndef PG_NAMESPACE_H
#define PG_NAMESPACE_H
#include "catalog/genbki.h"
#include "nodes/pg_list.h"
#include "utils/relcache.h"
/* ----------------------------------------------------------------
* pg_namespace definition.
*
* cpp turns this into typedef struct FormData_pg_namespace
*
* nspname name of the namespace
* nspowner owner (creator) of the namespace
* nspacl access privilege list
* nspdboid oid of the database
* ----------------------------------------------------------------
*/
/* TIDYCAT_BEGINDEF
CREATE TABLE pg_namespace
with (relid=2615)
(
nspname name ,
nspowner oid ,
nspacl aclitem[], -- VARIABLE LENGTH FIELD
nspdboid oid
);
create unique index on pg_namespace(nspname, nspdboid) with (indexid=2684, syscacheid=NAMESPACENAME, syscache_nbuckets=256);
create unique index on pg_namespace(oid) with (indexid=2685, syscacheid=NAMESPACEOID, syscache_nbuckets=256);
alter table pg_namespace add fk nspowner on pg_authid(oid);
TIDYCAT_ENDDEF
*/
/* TIDYCAT_BEGIN_CODEGEN
WARNING: DO NOT MODIFY THE FOLLOWING SECTION:
Generated by tidycat.pl version 16.
on Fri Nov 5 17:39:45 2010
*/
/*
TidyCat Comments for pg_namespace:
Table has an Oid column.
Table does not have static type (only legal for pre-3.3 tables).
*/
/* ----------------
* pg_namespace definition. cpp turns this into
* typedef struct FormData_pg_namespace
* ----------------
*/
#define NamespaceRelationId 2615
CATALOG(pg_namespace,2615)
{
NameData nspname;
Oid nspowner;
aclitem nspacl[1]; /* VARIABLE LENGTH FIELD */
Oid nspdboid;
} FormData_pg_namespace;
/* ----------------
* Form_pg_namespace corresponds to a pointer to a tuple with
* the format of pg_namespace relation.
* ----------------
*/
typedef FormData_pg_namespace *Form_pg_namespace;
/* ----------------
* compiler constants for pg_namespace
* ----------------
*/
#define Natts_pg_namespace 5
#define Anum_pg_namespace_nspname 1
#define Anum_pg_namespace_nspowner 2
#define Anum_pg_namespace_nspacl 3
#define Anum_pg_namespace_nspdboid 4
#define Anum_pg_namespace_oid -2
/* TIDYCAT_END_CODEGEN */
/*
* gp_exttable values for FormData_pg_attribute.
*
* [Similar examples are Schema_pg_type, Schema_pg_proc, Schema_pg_attribute, etc, in
* pg_attribute.h]
*/
#define Schema_pg_namespace \
{ NamespaceRelationId, {"nspname"}, 19, -1, 64, 1, 0, -1, -1, false, 'p', 'i', true, false, false, true, 0 }, \
{ NamespaceRelationId, {"nspowner"}, 26, -1, 4, 2, 0, -1, -1, true, 'p', 'i', true, false, false, true, 0 }, \
{ NamespaceRelationId, {"nspacl"}, 1034, -1, -1, 3, 1, -1, -1, false, 'x', 'i', false, false, false, true, 0 }, \
{ NamespaceRelationId, {"nspdboid"}, 26, -1, 4, 4, 0, -1, -1, true, 'p', 'i', false, false, false, true, 0 }, \
{ NamespaceRelationId, {"oid"}, 26, 0, 4, -2, 0, -1, -1, true, 'p', 'i', false, false, false, true, 0 }
/*
* pg_namespace table values for FormData_pg_namespace.
*/
#define Class_pg_namespace \
{"pg_namespace"}, PG_CATALOG_NAMESPACE, 10276, BOOTSTRAP_SUPERUSERID, 0, \
NamespaceRelationId, DEFAULTTABLESPACE_OID, \
25, 10000, 0, 0, 0, 0, true, false, RELKIND_RELATION, RELSTORAGE_HEAP, Natts_pg_namespace, \
0, 0, 0, 0, 0, true, false, false, false, FirstNormalTransactionId, {0}, {{{'\0','\0','\0','\0'},{'\0'}}}
/*
* Descriptor of a single AO relation.
* For now very similar to the catalog row itself but may change in time.
*/
typedef struct NameSpaceEntry
{
char* nspname;
Oid nspowner;
List* nspacl;
Oid nspdboid;
} NameSpaceEntry;
/* ----------------
* initial contents of pg_namespace
* ---------------
*/
DATA(insert OID = 11 ( "pg_catalog" PGUID _null_ 0));
DESCR("System catalog schema");
#define PG_CATALOG_NAMESPACE 11
DATA(insert OID = 99 ( "pg_toast" PGUID _null_ 0));
DESCR("Reserved schema for TOAST tables");
#define PG_TOAST_NAMESPACE 99
DATA(insert OID = 3012 ( "pg_bitmapindex" PGUID _null_ 0));
DESCR("Reserved schema for internal relations of bitmap indexes");
#define PG_BITMAPINDEX_NAMESPACE 3012
DATA(insert OID = 2200 ( "public" PGUID _null_ 0));
DESCR("Standard public schema");
#define PG_PUBLIC_NAMESPACE 2200
DATA(insert OID = 6104 ( "pg_aoseg" PGUID _null_ 0));
DESCR("Reserved schema for Append Only segment list and eof tables");
#define PG_AOSEGMENT_NAMESPACE 6104
#define IsBuiltInNameSpace(namespaceId) \
(namespaceId == PG_CATALOG_NAMESPACE || \
namespaceId == PG_TOAST_NAMESPACE || \
namespaceId == PG_BITMAPINDEX_NAMESPACE || \
namespaceId == PG_PUBLIC_NAMESPACE || \
namespaceId == PG_AOSEGMENT_NAMESPACE)
#define NSPDBOID_CURRENT 0
/*
* prototypes for functions in pg_namespace.c
*/
extern Oid NamespaceCreate(const char *nspName, Oid ownerId, Oid forceOid);
extern NameSpaceEntry *
GetNameSpaceEntryFromTuple(
Relation pg_namespace_rel,
TupleDesc pg_namespace_dsc,
HeapTuple tuple,
Oid *relationId);
#endif /* PG_NAMESPACE_H */