Pass the type OID as the typioparam for all non-array types, rather than

only composite types as we did in 8.0.  Per discussion with Martijn
van Oosterhout.
This commit is contained in:
Tom Lane 2005-08-12 21:49:47 +00:00
parent bb2ffe9acf
commit 59c016aa9f
2 changed files with 10 additions and 9 deletions

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_type.sgml,v 1.57 2005/07/14 06:17:36 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_type.sgml,v 1.58 2005/08/12 21:49:46 tgl Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -103,8 +103,8 @@ CREATE TYPE <replaceable class="parameter">name</replaceable> (
or as taking three arguments of types or as taking three arguments of types
<type>cstring</type>, <type>oid</type>, <type>integer</type>. <type>cstring</type>, <type>oid</type>, <type>integer</type>.
The first argument is the input text as a C string, the second 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 argument is the type's own OID (except for array types, which instead
(or the type's own OID for a composite type), receive their element type's OID),
and the third is the <literal>typmod</> of the destination column, if known and the third is the <literal>typmod</> of the destination column, if known
(-1 will be passed if not). (-1 will be passed if not).
The input function must return a value of the data type itself. The input function must return a value of the data type itself.

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.126 2005/06/28 05:09:01 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.127 2005/08/12 21:49:47 tgl Exp $
* *
* NOTES * NOTES
* Eventually, the index information should go through here, too. * Eventually, the index information should go through here, too.
@ -1223,13 +1223,14 @@ getTypeIOParam(HeapTuple typeTuple)
Form_pg_type typeStruct = (Form_pg_type) GETSTRUCT(typeTuple); Form_pg_type typeStruct = (Form_pg_type) GETSTRUCT(typeTuple);
/* /*
* Composite types get their own OID as parameter; array types get * Array types get their typelem as parameter; everybody else gets
* their typelem as parameter; everybody else gets zero. * their own type OID as parameter. (This is a change from 8.0,
* in which only composite types got their own OID as parameter.)
*/ */
if (typeStruct->typtype == 'c') if (OidIsValid(typeStruct->typelem))
return HeapTupleGetOid(typeTuple);
else
return typeStruct->typelem; return typeStruct->typelem;
else
return HeapTupleGetOid(typeTuple);
} }
/* /*