Fix assorted misstatements and poor wording in the descriptions of the I/O

formats for geometric types.  Per bug #5536 from Jon Strait, and my own
testing.

Back-patch to all supported branches, since this doco has been wrong right
along -- we certainly haven't changed the I/O behavior of these types in
many years.
This commit is contained in:
Tom Lane 2010-07-03 04:03:39 +00:00
parent 6ec7b0bd1b
commit 971e11028f
1 changed files with 42 additions and 23 deletions

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.154.4.3 2008/01/02 19:53:17 mha Exp $
$PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.154.4.4 2010/07/03 04:03:39 tgl Exp $
-->
<chapter id="datatype">
@ -2375,7 +2375,7 @@ SELECT * FROM test1 WHERE a;
<para>
A rich set of functions and operators is available to perform various geometric
operations such as scaling, translation, rotation, and determining
operations such as scaling, translation, rotation, and determining
intersections. They are explained in <xref linkend="functions-geometry">.
</para>
@ -2387,8 +2387,9 @@ SELECT * FROM test1 WHERE a;
</indexterm>
<para>
Points are the fundamental two-dimensional building block for geometric types.
Values of type <type>point</type> are specified using the following syntax:
Points are the fundamental two-dimensional building block for geometric
types. Values of type <type>point</type> are specified using either of
the following syntaxes:
<synopsis>
( <replaceable>x</replaceable> , <replaceable>y</replaceable> )
@ -2398,6 +2399,10 @@ SELECT * FROM test1 WHERE a;
where <replaceable>x</> and <replaceable>y</> are the respective
coordinates as floating-point numbers.
</para>
<para>
Points are output using the first syntax.
</para>
</sect2>
<sect2>
@ -2413,11 +2418,13 @@ SELECT * FROM test1 WHERE a;
<para>
Line segments (<type>lseg</type>) are represented by pairs of points.
Values of type <type>lseg</type> are specified using the following syntax:
Values of type <type>lseg</type> are specified using any of the following
syntaxes:
<synopsis>
[ ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> ) ]
( ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> ) )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> )
<replaceable>x1</replaceable> , <replaceable>y1</replaceable> , <replaceable>x2</replaceable> , <replaceable>y2</replaceable>
</synopsis>
@ -2427,6 +2434,10 @@ SELECT * FROM test1 WHERE a;
<literal>(<replaceable>x2</replaceable>,<replaceable>y2</replaceable>)</literal>
are the end points of the line segment.
</para>
<para>
Line segments are output using the first syntax.
</para>
</sect2>
<sect2>
@ -2443,11 +2454,12 @@ SELECT * FROM test1 WHERE a;
<para>
Boxes are represented by pairs of points that are opposite
corners of the box.
Values of type <type>box</type> are specified using the following syntax:
Values of type <type>box</type> are specified using any of the following
syntaxes:
<synopsis>
( ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> ) )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> )
<replaceable>x1</replaceable> , <replaceable>y1</replaceable> , <replaceable>x2</replaceable> , <replaceable>y2</replaceable>
</synopsis>
@ -2459,11 +2471,13 @@ SELECT * FROM test1 WHERE a;
</para>
<para>
Boxes are output using the first syntax.
The corners are reordered on input to store
the upper right corner, then the lower left corner.
Other corners of the box can be entered, but the lower
left and upper right corners are determined from the input and stored.
Boxes are output using the second syntax.
</para>
<para>
Any two opposite corners can be supplied on input, but the values
will be reordered as needed to store the
upper right and lower left corners, in that order.
</para>
</sect2>
@ -2483,20 +2497,22 @@ SELECT * FROM test1 WHERE a;
</para>
<para>
Values of type <type>path</type> are specified using the following syntax:
Values of type <type>path</type> are specified using any of the following
syntaxes:
<synopsis>
( ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> ) )
[ ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> ) ]
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> , ... , <replaceable>xn</replaceable> , <replaceable>yn</replaceable> )
<replaceable>x1</replaceable> , <replaceable>y1</replaceable> , ... , <replaceable>xn</replaceable> , <replaceable>yn</replaceable>
( ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> ) )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> )
( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> , ... , <replaceable>xn</replaceable> , <replaceable>yn</replaceable> )
<replaceable>x1</replaceable> , <replaceable>y1</replaceable> , ... , <replaceable>xn</replaceable> , <replaceable>yn</replaceable>
</synopsis>
where the points are the end points of the line segments
comprising the path. Square brackets (<literal>[]</>) indicate
an open path, while parentheses (<literal>()</>) indicate a
closed path.
closed path. When the outermost parentheses are omitted, as
in the third through fifth syntaxes, a closed path is assumed.
</para>
<para>
@ -2519,7 +2535,8 @@ SELECT * FROM test1 WHERE a;
</para>
<para>
Values of type <type>polygon</type> are specified using the following syntax:
Values of type <type>polygon</type> are specified using any of the
following syntaxes:
<synopsis>
( ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ... , ( <replaceable>xn</replaceable> , <replaceable>yn</replaceable> ) )
@ -2546,7 +2563,8 @@ SELECT * FROM test1 WHERE a;
<para>
Circles are represented by a center point and a radius.
Values of type <type>circle</type> are specified using the following syntax:
Values of type <type>circle</type> are specified using any of the
following syntaxes:
<synopsis>
&lt; ( <replaceable>x</replaceable> , <replaceable>y</replaceable> ) , <replaceable>r</replaceable> &gt;
@ -2556,8 +2574,9 @@ SELECT * FROM test1 WHERE a;
</synopsis>
where
<literal>(<replaceable>x</replaceable>,<replaceable>y</replaceable>)</literal>
is the center and <replaceable>r</replaceable> is the radius of the circle.
<literal>(<replaceable>x</replaceable>,<replaceable>y</replaceable>)</>
is the center and <replaceable>r</replaceable> is the radius of the
circle.
</para>
<para>