mirror of
https://github.com/postgres/postgres.git
synced 2025-08-31 17:02:12 +03:00
Update docs for 7.4 array features and polymorphic functions.
This is Joe Conway's patch of 7-Aug plus further editorializing of my own.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/syntax.sgml,v 1.80 2003/08/04 14:00:14 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/syntax.sgml,v 1.81 2003/08/09 22:50:22 tgl Exp $
|
||||
-->
|
||||
|
||||
<chapter id="sql-syntax">
|
||||
@@ -867,7 +867,8 @@ SELECT 3 OPERATOR(pg_catalog.+) 4;
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
A positional parameter reference, in the body of a function definition.
|
||||
A positional parameter reference, in the body of a function definition
|
||||
or prepared statement.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@@ -901,6 +902,12 @@ SELECT 3 OPERATOR(pg_catalog.+) 4;
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
An array constructor.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Another value expression in parentheses, useful to group subexpressions and override precedence.
|
||||
@@ -1216,8 +1223,86 @@ SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="sql-syntax-array-constructors">
|
||||
<title>Array Constructors</title>
|
||||
|
||||
<indexterm>
|
||||
<primary>arrays</primary>
|
||||
<secondary>constructors</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
An <firstterm>array constructor</> is an expression that builds an
|
||||
array value from values for its member elements. A simple array
|
||||
constructor
|
||||
consists of the keyword <literal>ARRAY</literal>, a left square bracket
|
||||
<literal>[</>, one or more expressions (separated by commas) for the
|
||||
array element values, and finally a right square bracket <literal>]</>.
|
||||
For example,
|
||||
<programlisting>
|
||||
SELECT ARRAY[1,2,3+4];
|
||||
array
|
||||
---------
|
||||
{1,2,7}
|
||||
(1 row)
|
||||
</programlisting>
|
||||
The array element type is the common type of the member expressions,
|
||||
determined using the same rules as for <literal>UNION</> or
|
||||
<literal>CASE</> constructs (see <xref linkend="typeconv-union-case">).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Multidimensional array values can be built by nesting array
|
||||
constructors.
|
||||
In the inner constructors, the keyword <literal>ARRAY</literal> may
|
||||
be omitted. For example, these produce the same result:
|
||||
|
||||
<programlisting>
|
||||
SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]];
|
||||
array
|
||||
---------------
|
||||
{{1,2},{3,4}}
|
||||
(1 row)
|
||||
|
||||
SELECT ARRAY[[1,2],[3,4]];
|
||||
array
|
||||
---------------
|
||||
{{1,2},{3,4}}
|
||||
(1 row)
|
||||
</programlisting>
|
||||
|
||||
Since multidimensional arrays must be rectangular, inner constructors
|
||||
at the same level must produce sub-arrays of identical dimensions.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It is also possible to construct an array from the results of a
|
||||
subquery. In this form, the array constructor is written with the
|
||||
keyword <literal>ARRAY</literal> followed by a parenthesized (not
|
||||
bracketed) subquery. For example:
|
||||
<programlisting>
|
||||
SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
|
||||
?column?
|
||||
-------------------------------------------------------------
|
||||
{2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31}
|
||||
(1 row)
|
||||
</programlisting>
|
||||
The sub-select must return a single column. The
|
||||
resulting one-dimensional array will have an element for each row in the
|
||||
sub-select result, with an element type matching that of the sub-select's
|
||||
output column.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The subscripts of an array value built with <literal>ARRAY</literal>
|
||||
always begin with one. For more information about arrays, see
|
||||
<xref linkend="arrays">.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="syntax-express-eval">
|
||||
<title>Expression Evaluation</title>
|
||||
<title>Expression Evaluation Rules</title>
|
||||
|
||||
<para>
|
||||
The order of evaluation of subexpressions is not defined. In
|
||||
|
Reference in New Issue
Block a user