blob: eaceee8a09567d146c6afacd311ca01f1507bae9 [file] [log] [blame]
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_type.sgml,v 1.4 2006/09/16 00:30:16 momjian Exp $
PostgreSQL documentation
-->
<refentry id="SQL-ALTERTYPE">
<refmeta>
<refentrytitle id="sql-altertype-title">ALTER TYPE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>
ALTER TYPE
</refname>
<refpurpose>
change the definition of a type
</refpurpose>
</refnamediv>
<indexterm zone="sql-altertype">
<primary>ALTER TYPE</primary>
</indexterm>
<refsynopsisdiv>
<synopsis>
ALTER TYPE <replaceable class="PARAMETER">name</replaceable>
SET DEFAULT ENCODING ( storage_directive )
OWNER TO <replaceable class="PARAMETER">new_owner</replaceable>
| SET SCHEMA <replaceable class="PARAMETER">new_schema</replaceable>
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
<command>ALTER TYPE</command> changes the definition of an existing type.
The only currently available capabilities are changing the owner and schema
of a type.
</para>
<para>
You must own the type to use <command>ALTER TYPE</>.
To change the schema of a type, you must also have
<literal>CREATE</literal> privilege on the new schema.
To alter the owner, you must also be a direct or indirect member of the new
owning role, and that role must have <literal>CREATE</literal> privilege on
the type's schema. (These restrictions enforce that altering the owner
doesn't do anything you couldn't do by dropping and recreating the type.
However, a superuser can alter ownership of any type anyway.)
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<para>
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">name</replaceable></term>
<listitem>
<para>
The name (possibly schema-qualified) of an existing type to
alter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">new_owner</replaceable></term>
<listitem>
<para>
The user name of the new owner of the type.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">new_schema</replaceable></term>
<listitem>
<para>
The new schema for the type.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">storage_directive</replaceable></term>
<listitem>
<para>
Sets any or all of the following: compression type, compression level,
and blocksize, using the following format:
COMPRESSTYPE={ZLIB | QUICKLZ | RLE_TYPE | NONE} |
COMPRESSLEVEL={0-9} | BLOCKSIZE={8192-2097152}
</para>
<para>
For more information on the compression and blocksize parameters, see the
"Storage Directives for Column-level Compression" in the Greenplum
Database Administrator Guide.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>
To change the owner of the user-defined type <literal>email</literal>
to <literal>joe</literal>:
<programlisting>
ALTER TYPE email OWNER TO joe;
</programlisting>
</para>
<para>
To change the schema of the user-defined type <literal>email</literal>
to <literal>customers</literal>:
<programlisting>
ALTER TYPE email SET SCHEMA customers;
</programlisting>
</para>
<para>
To change the type int to have ZLIB column compression:
<programlisting>
ALTER TYPE int SET DEFAULT ENCODING (COMPRESSTYPE=ZLIB);
</programlisting>
</para>
</refsect1>
<refsect1>
<title>Compatibility</title>
<para>
There is no <command>ALTER TYPE</command> statement in the SQL
standard.
</para>
</refsect1>
</refentry>