Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
a25b94c0
Commit
a25b94c0
authored
Mar 22, 2002
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create the pg_namespace system catalog. Doesn't do much yet, but it's
there and CREATE SCHEMA will make entries in it...
parent
48c91649
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
285 additions
and
35 deletions
+285
-35
doc/src/sgml/catalogs.sgml
doc/src/sgml/catalogs.sgml
+56
-1
src/backend/catalog/Makefile
src/backend/catalog/Makefile
+5
-5
src/backend/catalog/indexing.c
src/backend/catalog/indexing.c
+3
-1
src/backend/catalog/pg_namespace.c
src/backend/catalog/pg_namespace.c
+85
-0
src/backend/commands/command.c
src/backend/commands/command.c
+5
-6
src/backend/utils/cache/syscache.c
src/backend/utils/cache/syscache.c
+22
-1
src/include/catalog/catalog.h
src/include/catalog/catalog.h
+2
-2
src/include/catalog/catname.h
src/include/catalog/catname.h
+2
-2
src/include/catalog/catversion.h
src/include/catalog/catversion.h
+2
-2
src/include/catalog/indexing.h
src/include/catalog/indexing.h
+7
-1
src/include/catalog/pg_namespace.h
src/include/catalog/pg_namespace.h
+79
-0
src/include/utils/syscache.h
src/include/utils/syscache.h
+15
-13
src/test/regress/expected/sanity_check.out
src/test/regress/expected/sanity_check.out
+2
-1
No files found.
doc/src/sgml/catalogs.sgml
View file @
a25b94c0
<!--
Documentation of the system catalogs, directed toward PostgreSQL developers
$Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.3
6 2002/03/22 19:20:03 petere
Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.3
7 2002/03/22 21:34:43 tgl
Exp $
-->
<chapter id="catalogs">
...
...
@@ -111,6 +111,11 @@
<entry>asynchronous notification</entry>
</row>
<row>
<entry>pg_namespace</entry>
<entry>namespaces (schemas)</entry>
</row>
<row>
<entry>pg_opclass</entry>
<entry>index access method operator classes</entry>
...
...
@@ -1408,6 +1413,56 @@
</sect1>
<sect1 id="catalog-pg-namespace">
<title>pg_namespace</title>
<para>
A namespace is the structure underlying SQL92 schemas: each namespace
can have a separate collection of relations, types, etc without name
conflicts.
</para>
<table>
<title>pg_namespace Columns</title>
<tgroup cols=4>
<thead>
<row>
<entry>Name</entry>
<entry>Type</entry>
<entry>References</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>nspname</entry>
<entry><type>name</type></entry>
<entry></entry>
<entry>Name of the namespace</entry>
</row>
<row>
<entry>nspowner</entry>
<entry><type>int4</type></entry>
<entry>pg_shadow.usesysid</entry>
<entry>Owner (creator) of the namespace</entry>
</row>
<row>
<entry>nspacl</entry>
<entry><type>aclitem[]</type></entry>
<entry></entry>
<entry>Access permissions</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1>
<sect1 id="catalog-pg-operator">
<title>pg_operator</title>
...
...
src/backend/catalog/Makefile
View file @
a25b94c0
#-------------------------------------------------------------------------
#
# Makefile for catalog
# Makefile for
backend/
catalog
#
# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.3
7 2001/08/25 18:52:41
tgl Exp $
# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.3
8 2002/03/22 21:34:43
tgl Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -11,8 +11,8 @@ top_builddir = ../../..
include
$(top_builddir)/src/Makefile.global
OBJS
=
catalog.o heap.o index.o indexing.o aclchk.o
\
pg_aggregate.o pg_largeobject.o pg_
operator.o pg_proc
.o
\
pg_type.o
pg_aggregate.o pg_largeobject.o pg_
namespace
.o
\
pg_
operator.o pg_proc.o pg_
type.o
BKIFILES
=
postgres.bki postgres.description
...
...
@@ -31,7 +31,7 @@ POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/,\
pg_operator.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h
\
pg_language.h pg_largeobject.h pg_aggregate.h pg_statistic.h
\
pg_rewrite.h pg_trigger.h pg_listener.h pg_description.h
\
pg_database.h pg_shadow.h pg_group.h indexing.h
\
pg_
namespace.h pg_
database.h pg_shadow.h pg_group.h indexing.h
\
)
pg_includes
:=
$(
sort
-I
$(top_srcdir)
/src/include
-I
$(top_builddir)
/src/include
)
...
...
src/backend/catalog/indexing.c
View file @
a25b94c0
...
...
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.8
3 2002/02/19 20:11:11
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.8
4 2002/03/22 21:34:44
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -57,6 +57,8 @@ char *Name_pg_language_indices[Num_pg_language_indices] =
{
LanguageOidIndex
,
LanguageNameIndex
};
char
*
Name_pg_largeobject_indices
[
Num_pg_largeobject_indices
]
=
{
LargeObjectLOidPNIndex
};
char
*
Name_pg_namespace_indices
[
Num_pg_namespace_indices
]
=
{
NamespaceNameIndex
,
NamespaceOidIndex
};
char
*
Name_pg_opclass_indices
[
Num_pg_opclass_indices
]
=
{
OpclassAmNameIndex
,
OpclassOidIndex
};
char
*
Name_pg_operator_indices
[
Num_pg_operator_indices
]
=
...
...
src/backend/catalog/pg_namespace.c
0 → 100644
View file @
a25b94c0
/*-------------------------------------------------------------------------
*
* pg_namespace.c
* routines to support manipulation of the pg_namespace relation
*
* Portions Copyright (c) 1996-2001, 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.1 2002/03/22 21:34:44 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "access/heapam.h"
#include "catalog/catname.h"
#include "catalog/indexing.h"
#include "catalog/pg_namespace.h"
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/syscache.h"
/* ----------------
* NamespaceCreate
* ---------------
*/
Oid
NamespaceCreate
(
const
char
*
nspName
)
{
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
))
elog
(
ERROR
,
"namespace
\"
%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
(
GetUserId
());
nulls
[
Anum_pg_namespace_nspacl
-
1
]
=
'n'
;
nspdesc
=
heap_openr
(
NamespaceRelationName
,
RowExclusiveLock
);
tupDesc
=
nspdesc
->
rd_att
;
if
(
!
HeapTupleIsValid
(
tup
=
heap_formtuple
(
tupDesc
,
values
,
nulls
)))
elog
(
ERROR
,
"NamespaceCreate: heap_formtuple failed"
);
nspoid
=
heap_insert
(
nspdesc
,
tup
);
if
(
!
OidIsValid
(
nspoid
))
elog
(
ERROR
,
"NamespaceCreate: heap_insert failed"
);
if
(
RelationGetForm
(
nspdesc
)
->
relhasindex
)
{
Relation
idescs
[
Num_pg_namespace_indices
];
CatalogOpenIndices
(
Num_pg_namespace_indices
,
Name_pg_namespace_indices
,
idescs
);
CatalogIndexInsert
(
idescs
,
Num_pg_namespace_indices
,
nspdesc
,
tup
);
CatalogCloseIndices
(
Num_pg_namespace_indices
,
idescs
);
}
heap_close
(
nspdesc
,
RowExclusiveLock
);
return
nspoid
;
}
src/backend/commands/command.c
View file @
a25b94c0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.16
4 2002/03/22 02:56:31
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.16
5 2002/03/22 21:34:44
tgl Exp $
*
* NOTES
* The PerformAddAttribute() code, like most of the relation
...
...
@@ -28,6 +28,7 @@
#include "catalog/indexing.h"
#include "catalog/pg_attrdef.h"
#include "catalog/pg_index.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_opclass.h"
#include "catalog/pg_relcheck.h"
#include "catalog/pg_type.h"
...
...
@@ -2008,12 +2009,10 @@ CreateSchemaCommand(CreateSchemaStmt *stmt)
owner_name
,
authId
);
}
/*
FIXME FENN: Create the schema her
e */
(
void
)
schemaName
;
/* suppress compiler warning for now... */
/*
Create the schema's namespac
e */
NamespaceCreate
(
schemaName
);
/*
* Let commands in the schema-element-list know about the schema
*/
/* Let commands in the schema-element-list know about the schema */
CommandCounterIncrement
();
/*
...
...
src/backend/utils/cache/syscache.c
View file @
a25b94c0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.6
8 2002/03/21 23:27:2
4 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.6
9 2002/03/22 21:34:4
4 tgl Exp $
*
* NOTES
* These routines allow the parser/planner/executor to perform
...
...
@@ -32,6 +32,7 @@
#include "catalog/pg_index.h"
#include "catalog/pg_inherits.h"
#include "catalog/pg_language.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_opclass.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
...
...
@@ -263,6 +264,26 @@ static struct cachedesc cacheinfo[] = {
0
,
0
}},
{
NamespaceRelationName
,
/* NAMESPACENAME */
NamespaceNameIndex
,
0
,
1
,
{
Anum_pg_namespace_nspname
,
0
,
0
,
0
}},
{
NamespaceRelationName
,
/* NAMESPACEOID */
NamespaceOidIndex
,
0
,
1
,
{
ObjectIdAttributeNumber
,
0
,
0
,
0
}},
{
OperatorRelationName
,
/* OPERNAME */
OperatorNameIndex
,
0
,
...
...
src/include/catalog/catalog.h
View file @
a25b94c0
/*-------------------------------------------------------------------------
*
* catalog.h
* prototypes for functions in
lib
/catalog/catalog.c
* prototypes for functions in
backend
/catalog/catalog.c
*
*
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catalog.h,v 1.2
1 2001/11/16 23:30:35
tgl Exp $
* $Id: catalog.h,v 1.2
2 2002/03/22 21:34:44
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
src/include/catalog/catname.h
View file @
a25b94c0
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catname.h,v 1.2
3 2001/11/05 17:46:31 momjian
Exp $
* $Id: catname.h,v 1.2
4 2002/03/22 21:34:44 tgl
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -15,7 +15,6 @@
#define CATNAME_H
#define AggregateRelationName "pg_aggregate"
#define AccessMethodRelationName "pg_am"
#define AccessMethodOperatorRelationName "pg_amop"
...
...
@@ -29,6 +28,7 @@
#define LanguageRelationName "pg_language"
#define LargeObjectRelationName "pg_largeobject"
#define ListenerRelationName "pg_listener"
#define NamespaceRelationName "pg_namespace"
#define OperatorClassRelationName "pg_opclass"
#define OperatorRelationName "pg_operator"
#define ProcedureRelationName "pg_proc"
...
...
src/include/catalog/catversion.h
View file @
a25b94c0
...
...
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catversion.h,v 1.1
09 2002/03/22 02:56:35
tgl Exp $
* $Id: catversion.h,v 1.1
10 2002/03/22 21:34:44
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 2002032
12
#define CATALOG_VERSION_NO 2002032
21
#endif
src/include/catalog/indexing.h
View file @
a25b94c0
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: indexing.h,v 1.5
7 2002/02/19 20:11:19
tgl Exp $
* $Id: indexing.h,v 1.5
8 2002/03/22 21:34:44
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -34,6 +34,7 @@
#define Num_pg_inherits_indices 1
#define Num_pg_language_indices 2
#define Num_pg_largeobject_indices 1
#define Num_pg_namespace_indices 2
#define Num_pg_opclass_indices 2
#define Num_pg_operator_indices 2
#define Num_pg_proc_indices 2
...
...
@@ -70,6 +71,8 @@
#define LanguageNameIndex "pg_language_name_index"
#define LanguageOidIndex "pg_language_oid_index"
#define LargeObjectLOidPNIndex "pg_largeobject_loid_pn_index"
#define NamespaceNameIndex "pg_namespace_nspname_index"
#define NamespaceOidIndex "pg_namespace_oid_index"
#define OpclassAmNameIndex "pg_opclass_am_name_index"
#define OpclassOidIndex "pg_opclass_oid_index"
#define OperatorNameIndex "pg_operator_oprname_l_r_k_index"
...
...
@@ -104,6 +107,7 @@ extern char *Name_pg_index_indices[];
extern
char
*
Name_pg_inherits_indices
[];
extern
char
*
Name_pg_language_indices
[];
extern
char
*
Name_pg_largeobject_indices
[];
extern
char
*
Name_pg_namespace_indices
[];
extern
char
*
Name_pg_opclass_indices
[];
extern
char
*
Name_pg_operator_indices
[];
extern
char
*
Name_pg_proc_indices
[];
...
...
@@ -165,6 +169,8 @@ DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index on pg_inherits using btree(in
DECLARE_UNIQUE_INDEX
(
pg_language_name_index
on
pg_language
using
btree
(
lanname
name_ops
));
DECLARE_UNIQUE_INDEX
(
pg_language_oid_index
on
pg_language
using
btree
(
oid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_largeobject_loid_pn_index
on
pg_largeobject
using
btree
(
loid
oid_ops
,
pageno
int4_ops
));
DECLARE_UNIQUE_INDEX
(
pg_namespace_nspname_index
on
pg_namespace
using
btree
(
nspname
name_ops
));
DECLARE_UNIQUE_INDEX
(
pg_namespace_oid_index
on
pg_namespace
using
btree
(
oid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_opclass_am_name_index
on
pg_opclass
using
btree
(
opcamid
oid_ops
,
opcname
name_ops
));
DECLARE_UNIQUE_INDEX
(
pg_opclass_oid_index
on
pg_opclass
using
btree
(
oid
oid_ops
));
DECLARE_UNIQUE_INDEX
(
pg_operator_oid_index
on
pg_operator
using
btree
(
oid
oid_ops
));
...
...
src/include/catalog/pg_namespace.h
0 → 100644
View file @
a25b94c0
/*-------------------------------------------------------------------------
*
* pg_namespace.h
* definition of the system "namespace" relation (pg_namespace)
* along with the relation's initial contents.
*
*
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_namespace.h,v 1.1 2002/03/22 21:34:44 tgl 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
/* ----------------
* postgres.h contains the system type definitions and the
* CATALOG(), BOOTSTRAP and DATA() sugar words so this file
* can be read by both genbki.sh and the C compiler.
* ----------------
*/
/* ----------------------------------------------------------------
* 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
* ----------------------------------------------------------------
*/
CATALOG
(
pg_namespace
)
{
NameData
nspname
;
int4
nspowner
;
aclitem
nspacl
[
1
];
/* VARIABLE LENGTH FIELD */
}
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 3
#define Anum_pg_namespace_nspname 1
#define Anum_pg_namespace_nspowner 2
#define Anum_pg_namespace_nspacl 3
/* ----------------
* initial contents of pg_namespace
* ---------------
*/
DATA
(
insert
OID
=
11
(
"pg_catalog"
PGUID
"{=r}"
));
DESCR
(
"System catalog namespace"
);
#define PG_CATALOG_NAMESPACE 11
/*
* prototypes for functions in pg_namespace.c
*/
extern
Oid
NamespaceCreate
(
const
char
*
nspName
);
#endif
/* PG_NAMESPACE_H */
src/include/utils/syscache.h
View file @
a25b94c0
...
...
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: syscache.h,v 1.3
8 2002/03/21 23:27:25
tgl Exp $
* $Id: syscache.h,v 1.3
9 2002/03/22 21:34:44
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -45,18 +45,20 @@
#define INHRELID 14
#define LANGNAME 15
#define LANGOID 16
#define OPERNAME 17
#define OPEROID 18
#define PROCNAME 19
#define PROCOID 20
#define RELNAME 21
#define RELOID 22
#define RULENAME 23
#define SHADOWNAME 24
#define SHADOWSYSID 25
#define STATRELATT 26
#define TYPENAME 27
#define TYPEOID 28
#define NAMESPACENAME 17
#define NAMESPACEOID 18
#define OPERNAME 19
#define OPEROID 20
#define PROCNAME 21
#define PROCOID 22
#define RELNAME 23
#define RELOID 24
#define RULENAME 25
#define SHADOWNAME 26
#define SHADOWSYSID 27
#define STATRELATT 28
#define TYPENAME 29
#define TYPEOID 30
extern
void
InitCatalogCache
(
void
);
...
...
src/test/regress/expected/sanity_check.out
View file @
a25b94c0
...
...
@@ -45,6 +45,7 @@ SELECT relname, relhasindex
pg_inherits | t
pg_language | t
pg_largeobject | t
pg_namespace | t
pg_opclass | t
pg_operator | t
pg_proc | t
...
...
@@ -59,5 +60,5 @@ SELECT relname, relhasindex
shighway | t
tenk1 | t
tenk2 | t
(
49
rows)
(
50
rows)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment