1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-28 18:48:04 +03:00

DDL support for collations

- collowner field
- CREATE COLLATION
- ALTER COLLATION
- DROP COLLATION
- COMMENT ON COLLATION
- integration with extensions
- pg_dump support for the above
- dependency management
- psql tab completion
- psql \dO command
This commit is contained in:
Peter Eisentraut
2011-02-12 15:54:13 +02:00
parent d31e2a495b
commit b313bca0af
51 changed files with 1860 additions and 91 deletions

View File

@@ -0,0 +1,175 @@
<!-- doc/src/sgml/ref/create_collation.sgml -->
<refentry id="SQL-CREATECOLLATION">
<refmeta>
<refentrytitle>CREATE COLLATION</refentrytitle>
<manvolnum>7</manvolnum>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>CREATE COLLATION</refname>
<refpurpose>define a new collation</refpurpose>
</refnamediv>
<indexterm zone="sql-createcollation">
<primary>CREATE COLLATION</primary>
</indexterm>
<refsynopsisdiv>
<synopsis>
CREATE COLLATION <replaceable>name</replaceable> (
[ LOCALE = <replaceable>locale</replaceable>, ]
[ LC_COLLATE = <replaceable>lc_collate</replaceable>, ]
[ LC_CTYPE = <replaceable>lc_ctype</replaceable>, ]
)
CREATE COLLATION <replaceable>name</replaceable> FROM <replaceable>existing_collation</replaceable>
</synopsis>
</refsynopsisdiv>
<refsect1 id="sql-createcollation-description">
<title>Description</title>
<para>
<command>CREATE COLLATION</command> defines a new collation using
the specified operating system locales or from an existing collation.
</para>
<para>
To be able to create a collation, you must
have <literal>CREATE</literal> privilege on the destination schema.
</para>
</refsect1>
<refsect1>
<title>Parameters</title>
<variablelist>
<varlistentry>
<term><replaceable>name</replaceable></term>
<listitem>
<para>
The name of the collation. The collation name can be
schema-qualified. If it is not, the collation is defined in the
current schema. The collation name must be unique within a
schema. (The system catalogs can contain collations with the
same name for other encodings, but these are not usable if the
database encoding does not match.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>existing_collation</replaceable></term>
<listitem>
<para>
The name of an existing collation to copy. The new collation
will have the same properties as the existing one, but they
will become independent objects.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>locale</replaceable></term>
<listitem>
<para>
This is a shortcut for setting <symbol>LC_COLLATE</symbol>
and <symbol>LC_CTYPE</symbol> at once. If you specify this,
you cannot specify either of the other parameters.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>lc_collate</replaceable></term>
<listitem>
<para>
Use the specified operating system locale for
the <symbol>LC_COLLATE</symbol> locale category. The locale
must be applicable to the current database encoding.
(See <xref linkend="sql-createdatabase"> for the precise
rules.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>lc_ctype</replaceable></term>
<listitem>
<para>
Use the specified operating system locale for
the <symbol>LC_CTYPE</symbol> locale category. The locale
must be applicable to the current database encoding.
(See <xref linkend="sql-createdatabase"> for the precise
rules.)
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="sql-createcollation-notes">
<title>Notes</title>
<para>
Use <command>DROP COLLATION</command> to remove user-defined collations.
</para>
<para>
See <xref linkend="collation"> for more information about collation
support in PostgreSQL.
</para>
</refsect1>
<refsect1 id="sql-createcollation-examples">
<title>Examples</title>
<para>
To create a collation from the locale <literal>fr_FR.utf8</literal>
(assuming the current database encoding is <literal>UTF8</literal>):
<programlisting>
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
</programlisting>
</para>
<para>
To create a collation from an existing collation:
<programlisting>
CREATE COLLATION german FROM "de_DE";
</programlisting>
This can be convenient to be able to use operating-system
independent collation names in applications.
</para>
</refsect1>
<refsect1 id="sql-createcollation-compat">
<title>Compatibility</title>
<para>
There is a <command>CREATE COLLATION</command> statement in the SQL
standard, but it is limited to copying an existing collation. The
syntax to create a new collation is
a <productname>PostgreSQL</productname> extension.
</para>
</refsect1>
<refsect1 id="sql-createcollation-seealso">
<title>See Also</title>
<simplelist type="inline">
<member><xref linkend="sql-altercollation"></member>
<member><xref linkend="sql-dropcollation"></member>
</simplelist>
</refsect1>
</refentry>