Commit 59c016aa authored by Tom Lane's avatar Tom Lane

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.
parent bb2ffe9a
<!-- <!--
$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> ( ...@@ -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.
......
...@@ -7,7 +7,7 @@ ...@@ -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) ...@@ -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);
} }
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment