pg_namespace.c

来自「PostgreSQL7.4.6 for Linux」· C语言 代码 · 共 78 行

C
78
字号
/*------------------------------------------------------------------------- * * pg_namespace.c *	  routines to support manipulation of the pg_namespace relation * * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_namespace.c,v 1.7 2003/08/04 02:39:58 momjian Exp $ * *------------------------------------------------------------------------- */#include "postgres.h"#include "access/heapam.h"#include "catalog/catname.h"#include "catalog/indexing.h"#include "catalog/pg_namespace.h"#include "utils/builtins.h"#include "utils/syscache.h"/* ---------------- * NamespaceCreate * --------------- */OidNamespaceCreate(const char *nspName, int32 ownerSysId){	Relation	nspdesc;	HeapTuple	tup;	Oid			nspoid;	char		nulls[Natts_pg_namespace];	Datum		values[Natts_pg_namespace];	NameData	nname;	TupleDesc	tupDesc;	int			i;	/* sanity checks */	if (!nspName)		elog(ERROR, "no namespace name supplied");	/* make sure there is no existing namespace of same name */	if (SearchSysCacheExists(NAMESPACENAME,							 PointerGetDatum(nspName),							 0, 0, 0))		ereport(ERROR,				(errcode(ERRCODE_DUPLICATE_SCHEMA),				 errmsg("schema \"%s\" already exists", nspName)));	/* initialize nulls and values */	for (i = 0; i < Natts_pg_namespace; i++)	{		nulls[i] = ' ';		values[i] = (Datum) NULL;	}	namestrcpy(&nname, nspName);	values[Anum_pg_namespace_nspname - 1] = NameGetDatum(&nname);	values[Anum_pg_namespace_nspowner - 1] = Int32GetDatum(ownerSysId);	nulls[Anum_pg_namespace_nspacl - 1] = 'n';	nspdesc = heap_openr(NamespaceRelationName, RowExclusiveLock);	tupDesc = nspdesc->rd_att;	tup = heap_formtuple(tupDesc, values, nulls);	nspoid = simple_heap_insert(nspdesc, tup);	Assert(OidIsValid(nspoid));	CatalogUpdateIndexes(nspdesc, tup);	heap_close(nspdesc, RowExclusiveLock);	return nspoid;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?