|
|
|
@ -1,5 +1,5 @@ |
|
|
|
|
<!-- |
|
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_type.sgml,v 1.22 2001/09/13 15:55:24 petere Exp $ |
|
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_type.sgml,v 1.23 2001/09/13 19:05:29 petere Exp $ |
|
|
|
|
Postgres documentation |
|
|
|
|
--> |
|
|
|
|
|
|
|
|
@ -210,7 +210,7 @@ CREATE |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<command>CREATE TYPE</command> allows the user to register a new user data |
|
|
|
|
type with Postgres for use in the current data base. The |
|
|
|
|
type with PostgreSQL for use in the current data base. The |
|
|
|
|
user who defines a type becomes its owner. |
|
|
|
|
<replaceable class="parameter">typename</replaceable> is |
|
|
|
|
the name of the new type and must be unique within the |
|
|
|
@ -235,9 +235,9 @@ CREATE |
|
|
|
|
New base data types can be fixed length, in which case |
|
|
|
|
<replaceable class="parameter">internallength</replaceable> is a |
|
|
|
|
positive integer, or variable length, |
|
|
|
|
in which case Postgres assumes that the new type has the |
|
|
|
|
in which case PostgreSQL assumes that the new type has the |
|
|
|
|
same format |
|
|
|
|
as the Postgres-supplied data type, <type>text</type>. |
|
|
|
|
as the PostgreSQL-supplied data type, <type>text</type>. |
|
|
|
|
To indicate that a type is variable length, set |
|
|
|
|
<replaceable class="parameter">internallength</replaceable> |
|
|
|
|
to <option>VARIABLE</option>. |
|
|
|
@ -274,9 +274,9 @@ CREATE |
|
|
|
|
The optional arguments |
|
|
|
|
<replaceable class="parameter">send_function</replaceable> and |
|
|
|
|
<replaceable class="parameter">receive_function</replaceable> |
|
|
|
|
are used when the application program requesting Postgres |
|
|
|
|
are used when the application program requesting PostgreSQL |
|
|
|
|
services resides on a different machine. In this case, |
|
|
|
|
the machine on which Postgres runs may use a format for the data |
|
|
|
|
the machine on which PostgreSQL runs may use a format for the data |
|
|
|
|
type different from that used on the remote machine. |
|
|
|
|
In this case it is appropriate to convert data items to a |
|
|
|
|
standard form when sending from the server to the client |
|
|
|
@ -327,91 +327,79 @@ CREATE |
|
|
|
|
Two generalized built-in functions, array_in and |
|
|
|
|
array_out, exist for quick creation of variable-length |
|
|
|
|
array types. These functions operate on arrays of any |
|
|
|
|
existing Postgres type. |
|
|
|
|
existing PostgreSQL type. |
|
|
|
|
</para> |
|
|
|
|
</refsect2> |
|
|
|
|
|
|
|
|
|
</refsect1> |
|
|
|
|
|
|
|
|
|
<refsect1 id="SQL-CREATETYPE-notes"> |
|
|
|
|
<title>Notes</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Type names cannot begin with the underscore character |
|
|
|
|
(<quote><literal>_</literal></quote>) and can only be 31 |
|
|
|
|
characters long. This is because PostgreSQL silently creates an |
|
|
|
|
array type for each base type with a name consisting of the base |
|
|
|
|
type's name prepended with an underscore. |
|
|
|
|
</para> |
|
|
|
|
</refsect1> |
|
|
|
|
|
|
|
|
|
<refsect1> |
|
|
|
|
<title>Examples</title> |
|
|
|
|
<para> |
|
|
|
|
This command creates the box data type and then uses the |
|
|
|
|
This command creates the <type>box</type> data type and then uses the |
|
|
|
|
type in a table definition: |
|
|
|
|
<programlisting> |
|
|
|
|
<programlisting> |
|
|
|
|
CREATE TYPE box (INTERNALLENGTH = 8, |
|
|
|
|
INPUT = my_procedure_1, OUTPUT = my_procedure_2); |
|
|
|
|
CREATE TABLE myboxes (id INT4, description box); |
|
|
|
|
</programlisting> |
|
|
|
|
</programlisting> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This command creates a variable length array type with |
|
|
|
|
integer elements: |
|
|
|
|
<type>integer</type> elements: |
|
|
|
|
|
|
|
|
|
<programlisting> |
|
|
|
|
<programlisting> |
|
|
|
|
CREATE TYPE int4array (INPUT = array_in, OUTPUT = array_out, |
|
|
|
|
INTERNALLENGTH = VARIABLE, ELEMENT = int4); |
|
|
|
|
CREATE TABLE myarrays (id int4, numbers int4array); |
|
|
|
|
</programlisting> |
|
|
|
|
</programlisting> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This command creates a large object type and uses it in |
|
|
|
|
a table definition: |
|
|
|
|
|
|
|
|
|
<programlisting> |
|
|
|
|
<programlisting> |
|
|
|
|
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout, |
|
|
|
|
INTERNALLENGTH = VARIABLE); |
|
|
|
|
CREATE TABLE big_objs (id int4, obj bigobj); |
|
|
|
|
</programlisting> |
|
|
|
|
</programlisting> |
|
|
|
|
</para> |
|
|
|
|
</refsect1> |
|
|
|
|
|
|
|
|
|
<refsect2 id="R2-SQL-CREATETYPE-3"> |
|
|
|
|
<refsect2info> |
|
|
|
|
<date>1998-09-21</date> |
|
|
|
|
</refsect2info> |
|
|
|
|
<title> |
|
|
|
|
Notes |
|
|
|
|
</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Type names cannot begin with the underscore character |
|
|
|
|
("_") and can only be 31 characters long. This is because |
|
|
|
|
Postgres silently creates an array type for each base type |
|
|
|
|
with a name consisting of the base type's name prepended |
|
|
|
|
with an underscore. |
|
|
|
|
</para> |
|
|
|
|
<refsect1 id="SQL-CREATETYPE-compatibility"> |
|
|
|
|
<title>Compatibility</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Refer to <command>DROP TYPE</command> to remove an existing type. |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
See also <command>CREATE FUNCTION</command>, |
|
|
|
|
<command>CREATE OPERATOR</command> and the chapter on Large Objects |
|
|
|
|
in the <citetitle>PostgreSQL Programmer's Guide</citetitle>. |
|
|
|
|
</para> |
|
|
|
|
</refsect2> |
|
|
|
|
<para> |
|
|
|
|
This <command>CREATE TYPE</command> command is a |
|
|
|
|
<productname>PostgreSQL</productname> extension. There is a |
|
|
|
|
<command>CREATE TYPE</command> statement in SQL99 that is rather |
|
|
|
|
different in detail. |
|
|
|
|
</para> |
|
|
|
|
</refsect1> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<refsect1 id="R1-SQL-CREATETYPE-3"> |
|
|
|
|
<title> |
|
|
|
|
Compatibility |
|
|
|
|
</title> |
|
|
|
|
|
|
|
|
|
<refsect2 id="R2-SQL-CREATETYPE-4"> |
|
|
|
|
<refsect2info> |
|
|
|
|
<date>1998-09-21</date> |
|
|
|
|
</refsect2info> |
|
|
|
|
<title> |
|
|
|
|
SQL3 |
|
|
|
|
</title> |
|
|
|
|
<para> |
|
|
|
|
<command>CREATE TYPE</command> is an <acronym>SQL3</acronym> statement. |
|
|
|
|
</para> |
|
|
|
|
</refsect2> |
|
|
|
|
<refsect1 id="SQL-CREATETYPE-see-also"> |
|
|
|
|
<title>See Also</title> |
|
|
|
|
|
|
|
|
|
<simplelist type="inline"> |
|
|
|
|
<member><xref linkend="sql-createfunction"></member> |
|
|
|
|
<member><xref linkend="sql-droptype"></member> |
|
|
|
|
<member><citetitle>PostgreSQL Programmer's Guide</citetitle></member> |
|
|
|
|
</simplelist> |
|
|
|
|
</refsect1> |
|
|
|
|
|
|
|
|
|
</refentry> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|