mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
pg_type has a typnamespace column; system now supports creating types
in different namespaces. Also, cleanup work on relation namespace support: drop, alter, rename commands work for tables in non-default namespaces.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.173 2002/03/22 02:56:31 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.174 2002/03/29 19:06:08 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1637,10 +1637,11 @@ _copyTypeName(TypeName *from)
|
||||
{
|
||||
TypeName *newnode = makeNode(TypeName);
|
||||
|
||||
if (from->name)
|
||||
newnode->name = pstrdup(from->name);
|
||||
Node_Copy(from, newnode, names);
|
||||
newnode->typeid = from->typeid;
|
||||
newnode->timezone = from->timezone;
|
||||
newnode->setof = from->setof;
|
||||
newnode->pct_type = from->pct_type;
|
||||
newnode->typmod = from->typmod;
|
||||
Node_Copy(from, newnode, arrayBounds);
|
||||
|
||||
@@ -2008,7 +2009,7 @@ _copyDefineStmt(DefineStmt *from)
|
||||
DefineStmt *newnode = makeNode(DefineStmt);
|
||||
|
||||
newnode->defType = from->defType;
|
||||
newnode->defname = pstrdup(from->defname);
|
||||
Node_Copy(from, newnode, defnames);
|
||||
Node_Copy(from, newnode, definition);
|
||||
|
||||
return newnode;
|
||||
@@ -2089,7 +2090,7 @@ _copyProcedureStmt(ProcedureStmt *from)
|
||||
ProcedureStmt *newnode = makeNode(ProcedureStmt);
|
||||
|
||||
newnode->replace = from->replace;
|
||||
newnode->funcname = pstrdup(from->funcname);
|
||||
Node_Copy(from, newnode, funcname);
|
||||
Node_Copy(from, newnode, argTypes);
|
||||
Node_Copy(from, newnode, returnType);
|
||||
Node_Copy(from, newnode, withClause);
|
||||
@@ -2229,8 +2230,7 @@ _copyCreateDomainStmt(CreateDomainStmt *from)
|
||||
{
|
||||
CreateDomainStmt *newnode = makeNode(CreateDomainStmt);
|
||||
|
||||
if (from->domainname)
|
||||
newnode->domainname = pstrdup(from->domainname);
|
||||
Node_Copy(from, newnode, domainname);
|
||||
Node_Copy(from, newnode, typename);
|
||||
Node_Copy(from, newnode, constraints);
|
||||
|
||||
|
@@ -20,7 +20,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.121 2002/03/22 02:56:31 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.122 2002/03/29 19:06:08 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -836,7 +836,7 @@ _equalDefineStmt(DefineStmt *a, DefineStmt *b)
|
||||
{
|
||||
if (a->defType != b->defType)
|
||||
return false;
|
||||
if (!equalstr(a->defname, b->defname))
|
||||
if (!equal(a->defnames, b->defnames))
|
||||
return false;
|
||||
if (!equal(a->definition, b->definition))
|
||||
return false;
|
||||
@@ -928,7 +928,7 @@ _equalProcedureStmt(ProcedureStmt *a, ProcedureStmt *b)
|
||||
{
|
||||
if (a->replace != b->replace)
|
||||
return false;
|
||||
if (!equalstr(a->funcname, b->funcname))
|
||||
if (!equal(a->funcname, b->funcname))
|
||||
return false;
|
||||
if (!equal(a->argTypes, b->argTypes))
|
||||
return false;
|
||||
@@ -1071,7 +1071,7 @@ _equalLoadStmt(LoadStmt *a, LoadStmt *b)
|
||||
static bool
|
||||
_equalCreateDomainStmt(CreateDomainStmt *a, CreateDomainStmt *b)
|
||||
{
|
||||
if (!equalstr(a->domainname, b->domainname))
|
||||
if (!equal(a->domainname, b->domainname))
|
||||
return false;
|
||||
if (!equal(a->typename, b->typename))
|
||||
return false;
|
||||
@@ -1572,12 +1572,16 @@ _equalRangeSubselect(RangeSubselect *a, RangeSubselect *b)
|
||||
static bool
|
||||
_equalTypeName(TypeName *a, TypeName *b)
|
||||
{
|
||||
if (!equalstr(a->name, b->name))
|
||||
if (!equal(a->names, b->names))
|
||||
return false;
|
||||
if (a->typeid != b->typeid)
|
||||
return false;
|
||||
if (a->timezone != b->timezone)
|
||||
return false;
|
||||
if (a->setof != b->setof)
|
||||
return false;
|
||||
if (a->pct_type != b->pct_type)
|
||||
return false;
|
||||
if (a->typmod != b->typmod)
|
||||
return false;
|
||||
if (!equal(a->arrayBounds, b->arrayBounds))
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.29 2002/03/22 02:56:32 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.30 2002/03/29 19:06:09 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
@@ -209,3 +209,17 @@ makeRangeVar(char *schemaname, char *relname)
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* makeTypeName -
|
||||
* build a TypeName node for an unqualified name.
|
||||
*/
|
||||
TypeName *
|
||||
makeTypeName(char *typnam)
|
||||
{
|
||||
TypeName *n = makeNode(TypeName);
|
||||
|
||||
n->names = makeList1(makeString(typnam));
|
||||
n->typmod = -1;
|
||||
return n;
|
||||
}
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.151 2002/03/22 02:56:32 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.152 2002/03/29 19:06:09 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Every (plan) node in POSTGRES has an associated "out" routine which
|
||||
@@ -187,11 +187,14 @@ _outColumnDef(StringInfo str, ColumnDef *node)
|
||||
static void
|
||||
_outTypeName(StringInfo str, TypeName *node)
|
||||
{
|
||||
appendStringInfo(str, " TYPENAME :name ");
|
||||
_outToken(str, node->name);
|
||||
appendStringInfo(str, " :timezone %s :setof %s typmod %d :arrayBounds ",
|
||||
appendStringInfo(str, " TYPENAME :names ");
|
||||
_outNode(str, node->names);
|
||||
appendStringInfo(str, " :typeid %u :timezone %s :setof %s"
|
||||
" :pct_type %s typmod %d :arrayBounds ",
|
||||
node->typeid,
|
||||
booltostr(node->timezone),
|
||||
booltostr(node->setof),
|
||||
booltostr(node->pct_type),
|
||||
node->typmod);
|
||||
_outNode(str, node->arrayBounds);
|
||||
}
|
||||
|
Reference in New Issue
Block a user