aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/heap.c12
-rw-r--r--src/backend/catalog/pg_type.c13
-rw-r--r--src/backend/commands/functioncmds.c4
-rw-r--r--src/backend/commands/typecmds.c7
-rw-r--r--src/include/catalog/pg_type.h7
5 files changed, 27 insertions, 16 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 71e0f9d3962..ba0e25e8504 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.292.2.2 2006/04/24 01:40:39 alvherre Exp $
+ * $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.292.2.3 2009/02/24 01:39:10 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -70,7 +70,8 @@ static void AddNewRelationTuple(Relation pg_class_desc,
static Oid AddNewRelationType(const char *typeName,
Oid typeNamespace,
Oid new_rel_oid,
- char new_rel_kind);
+ char new_rel_kind,
+ Oid ownerid);
static void RelationRemoveInheritance(Oid relid);
static void StoreRelCheck(Relation rel, char *ccname, char *ccbin);
static void StoreConstraints(Relation rel, TupleDesc tupdesc);
@@ -629,13 +630,15 @@ static Oid
AddNewRelationType(const char *typeName,
Oid typeNamespace,
Oid new_rel_oid,
- char new_rel_kind)
+ char new_rel_kind,
+ Oid ownerid)
{
return
TypeCreate(typeName, /* type name */
typeNamespace, /* type namespace */
new_rel_oid, /* relation oid */
new_rel_kind, /* relation kind */
+ ownerid, /* owner's ID */
-1, /* internal size (varlena) */
'c', /* type-type (complex) */
',', /* default array delimiter */
@@ -730,7 +733,8 @@ heap_create_with_catalog(const char *relname,
new_type_oid = AddNewRelationType(relname,
relnamespace,
relid,
- relkind);
+ relkind,
+ ownerid);
/*
* now create an entry in pg_class for the relation.
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index ab250b02ea9..215ade7c117 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.104 2005/10/15 02:49:14 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.104.2.1 2009/02/24 01:39:10 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -40,7 +40,7 @@
* ----------------------------------------------------------------
*/
Oid
-TypeShellMake(const char *typeName, Oid typeNamespace)
+TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
{
Relation pg_type_desc;
TupleDesc tupDesc;
@@ -75,7 +75,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace)
namestrcpy(&name, typeName);
values[i++] = NameGetDatum(&name); /* typname */
values[i++] = ObjectIdGetDatum(typeNamespace); /* typnamespace */
- values[i++] = ObjectIdGetDatum(GetUserId()); /* typowner */
+ values[i++] = ObjectIdGetDatum(ownerId); /* typowner */
values[i++] = Int16GetDatum(0); /* typlen */
values[i++] = BoolGetDatum(false); /* typbyval */
values[i++] = CharGetDatum(0); /* typtype */
@@ -117,7 +117,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace)
typoid,
InvalidOid,
0,
- GetUserId(),
+ ownerId,
InvalidOid,
InvalidOid,
InvalidOid,
@@ -150,6 +150,7 @@ TypeCreate(const char *typeName,
Oid typeNamespace,
Oid relationOid, /* only for 'c'atalog types */
char relationKind, /* ditto */
+ Oid ownerId,
int16 internalSize,
char typeType,
char typDelim,
@@ -224,7 +225,7 @@ TypeCreate(const char *typeName,
namestrcpy(&name, typeName);
values[i++] = NameGetDatum(&name); /* typname */
values[i++] = ObjectIdGetDatum(typeNamespace); /* typnamespace */
- values[i++] = ObjectIdGetDatum(GetUserId()); /* typowner */
+ values[i++] = ObjectIdGetDatum(ownerId); /* typowner */
values[i++] = Int16GetDatum(internalSize); /* typlen */
values[i++] = BoolGetDatum(passedByValue); /* typbyval */
values[i++] = CharGetDatum(typeType); /* typtype */
@@ -323,7 +324,7 @@ TypeCreate(const char *typeName,
typeObjectId,
relationOid,
relationKind,
- GetUserId(),
+ ownerId,
inputProcedure,
outputProcedure,
receiveProcedure,
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index f4d6164775e..13e4b45915a 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.69 2005/10/15 02:49:15 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.69.2.1 2009/02/24 01:39:10 tgl Exp $
*
* DESCRIPTION
* These routines take the parse tree and pick out the
@@ -123,7 +123,7 @@ compute_return_type(TypeName *returnType, Oid languageOid,
if (aclresult != ACLCHECK_OK)
aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
get_namespace_name(namespaceId));
- rettype = TypeShellMake(typname, namespaceId);
+ rettype = TypeShellMake(typname, namespaceId, GetUserId());
Assert(OidIsValid(rettype));
}
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index dd5b52bc97a..93d6bc85e41 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.82.2.2 2007/06/20 18:16:04 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.82.2.3 2009/02/24 01:39:10 tgl Exp $
*
* DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the
@@ -251,7 +251,7 @@ DefineType(List *names, List *parameters)
0, 0);
if (!OidIsValid(typoid))
{
- typoid = TypeShellMake(typeName, typeNamespace);
+ typoid = TypeShellMake(typeName, typeNamespace, GetUserId());
/* Make new shell type visible for modification below */
CommandCounterIncrement();
}
@@ -338,6 +338,7 @@ DefineType(List *names, List *parameters)
typeNamespace, /* namespace */
InvalidOid, /* relation oid (n/a here) */
0, /* relation kind (ditto) */
+ GetUserId(), /* owner's ID */
internalLength, /* internal size */
'b', /* type-type (base type) */
delimiter, /* array element delimiter */
@@ -370,6 +371,7 @@ DefineType(List *names, List *parameters)
typeNamespace, /* namespace */
InvalidOid, /* relation oid (n/a here) */
0, /* relation kind (ditto) */
+ GetUserId(), /* owner's ID */
-1, /* internal size */
'b', /* type-type (base type) */
DEFAULT_TYPDELIM, /* array element delimiter */
@@ -732,6 +734,7 @@ DefineDomain(CreateDomainStmt *stmt)
domainNamespace, /* namespace */
InvalidOid, /* relation oid (n/a here) */
0, /* relation kind (ditto) */
+ GetUserId(), /* owner's ID */
internalLength, /* internal size */
'd', /* type-type (domain type) */
delimiter, /* array element delimiter */
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index ba3dc0d5979..4d2280cfea1 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/pg_type.h,v 1.166.2.1 2005/11/22 18:23:27 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_type.h,v 1.166.2.2 2009/02/24 01:39:10 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -550,12 +550,15 @@ DATA(insert OID = 2283 ( anyelement PGNSP PGUID 4 t p t \054 0 0 anyelement_in
/*
* prototypes for functions in pg_type.c
*/
-extern Oid TypeShellMake(const char *typeName, Oid typeNamespace);
+extern Oid TypeShellMake(const char *typeName,
+ Oid typeNamespace,
+ Oid ownerId);
extern Oid TypeCreate(const char *typeName,
Oid typeNamespace,
Oid relationOid,
char relationKind,
+ Oid ownerId,
int16 internalSize,
char typeType,
char typDelim,