Index: doc/src/sgml/ref/create_type.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_type.sgml,v
retrieving revision 1.57
diff -u -r1.57 create_type.sgml
--- doc/src/sgml/ref/create_type.sgml 14 Jul 2005 06:17:36 -0000 1.57
+++ doc/src/sgml/ref/create_type.sgml 12 Aug 2005 12:52:17 -0000
@@ -102,9 +102,8 @@
declared as taking one argument of type cstring,
or as taking three arguments of types
cstring, oid, integer.
- The first argument is the input text as a C string, the second
- argument is the element type's OID in case this is an array type
- (or the type's own OID for a composite type),
+ The first argument is the input text as a C string, the second argument is
+ the OID of the type, except for arrays where it is the element type's OID
and the third is the typmod> of the destination column, if known
(-1 will be passed if not).
The input function must return a value of the data type itself.
Index: src/backend/utils/cache/lsyscache.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v
retrieving revision 1.116
diff -u -r1.116 lsyscache.c
--- src/backend/utils/cache/lsyscache.c 29 Aug 2004 05:06:50 -0000 1.116
+++ src/backend/utils/cache/lsyscache.c 12 Aug 2005 12:52:17 -0000
@@ -1220,12 +1220,14 @@
/*
* Composite types get their own OID as parameter; array types get
- * their typelem as parameter; everybody else gets zero.
+ * their typelem as parameter; everybody else gets their own oid.
*/
if (typeStruct->typtype == 'c')
return HeapTupleGetOid(typeTuple);
- else
+ else if( typeStruct->typelem != 0 )
return typeStruct->typelem;
+ else
+ return HeapTupleGetOid(typeTuple);
}
/*