mirror of
https://github.com/postgres/postgres.git
synced 2025-12-22 17:42:17 +03:00
Per-column collation support
This adds collation support for columns and domains, a COLLATE clause to override it per expression, and B-tree index support. Peter Eisentraut reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch
This commit is contained in:
@@ -22,6 +22,7 @@ PostgreSQL documentation
|
||||
<refsynopsisdiv>
|
||||
<synopsis>
|
||||
CREATE DOMAIN <replaceable class="parameter">name</replaceable> [ AS ] <replaceable class="parameter">data_type</replaceable>
|
||||
[ COLLATE <replaceable>collation</replaceable> ]
|
||||
[ DEFAULT <replaceable>expression</replaceable> ]
|
||||
[ <replaceable class="PARAMETER">constraint</replaceable> [ ... ] ]
|
||||
|
||||
@@ -83,6 +84,17 @@ CREATE DOMAIN <replaceable class="parameter">name</replaceable> [ AS ] <replacea
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable>collation</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
An optional collation for the domain. If no collation is
|
||||
specified, the database default collation is used (which can
|
||||
be overridden when the domain is used to define a column).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>DEFAULT <replaceable>expression</replaceable></literal></term>
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ PostgreSQL documentation
|
||||
<refsynopsisdiv>
|
||||
<synopsis>
|
||||
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ <replaceable class="parameter">name</replaceable> ] ON <replaceable class="parameter">table</replaceable> [ USING <replaceable class="parameter">method</replaceable> ]
|
||||
( { <replaceable class="parameter">column</replaceable> | ( <replaceable class="parameter">expression</replaceable> ) } [ <replaceable class="parameter">opclass</replaceable> ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
||||
( { <replaceable class="parameter">column</replaceable> | ( <replaceable class="parameter">expression</replaceable> ) } [ COLLATE <replaceable class="parameter">collation</replaceable> ] [ <replaceable class="parameter">opclass</replaceable> ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
||||
[ WITH ( <replaceable class="PARAMETER">storage_parameter</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] ) ]
|
||||
[ TABLESPACE <replaceable class="parameter">tablespace</replaceable> ]
|
||||
[ WHERE <replaceable class="parameter">predicate</replaceable> ]
|
||||
@@ -181,6 +181,20 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ <replaceable class="parameter">name</
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">collation</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The name of the collation to use for the index. By default,
|
||||
the index uses the collation declared for the column to be
|
||||
indexed or the result collation of the expression to be
|
||||
indexed. Indexes with nondefault collations are
|
||||
available for use by queries that involve expressions using
|
||||
nondefault collations.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">opclass</replaceable></term>
|
||||
<listitem>
|
||||
|
||||
@@ -22,7 +22,7 @@ PostgreSQL documentation
|
||||
<refsynopsisdiv>
|
||||
<synopsis>
|
||||
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] <replaceable class="PARAMETER">table_name</replaceable> ( [
|
||||
{ <replaceable class="PARAMETER">column_name</replaceable> <replaceable class="PARAMETER">data_type</replaceable> [ <replaceable class="PARAMETER">column_constraint</replaceable> [ ... ] ]
|
||||
{ <replaceable class="PARAMETER">column_name</replaceable> <replaceable class="PARAMETER">data_type</replaceable> [ COLLATE <replaceable>collation</replaceable> ] [ <replaceable class="PARAMETER">column_constraint</replaceable> [ ... ] ]
|
||||
| <replaceable>table_constraint</replaceable>
|
||||
| LIKE <replaceable>parent_table</replaceable> [ <replaceable>like_option</replaceable> ... ] }
|
||||
[, ... ]
|
||||
@@ -244,6 +244,17 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>COLLATE <replaceable>collation</replaceable></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>COLLATE</> clause assigns a nondefault collation to
|
||||
the column. By default, the locale settings of the database are
|
||||
used.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>INHERITS ( <replaceable>parent_table</replaceable> [, ... ] )</literal></term>
|
||||
<listitem>
|
||||
|
||||
@@ -45,6 +45,7 @@ CREATE TYPE <replaceable class="parameter">name</replaceable> (
|
||||
[ , DEFAULT = <replaceable class="parameter">default</replaceable> ]
|
||||
[ , ELEMENT = <replaceable class="parameter">element</replaceable> ]
|
||||
[ , DELIMITER = <replaceable class="parameter">delimiter</replaceable> ]
|
||||
[ , COLLATABLE = <replaceable class="parameter">collatable</replaceable> ]
|
||||
)
|
||||
|
||||
CREATE TYPE <replaceable class="parameter">name</replaceable>
|
||||
@@ -352,6 +353,16 @@ CREATE TYPE <replaceable class="parameter">name</replaceable>
|
||||
with the array element type, not the array type itself.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If the optional
|
||||
parameter <replaceable class="parameter">collatable</replaceable>
|
||||
is true, column definitions and expressions of the type may carry
|
||||
collation information and allow the use of
|
||||
the <literal>COLLATE</literal> clause. It is up to the
|
||||
implementations of the functions operating on the type to actually
|
||||
make use of the collation information; this does not happen
|
||||
automatically merely by marking the type collatable.
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2>
|
||||
|
||||
Reference in New Issue
Block a user