<para>
Numeric types consist of two- and four-byte integers and four- and eight-byte
- floating point numbers.</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Numeric Types</title>
-<titleabbrev>Numerics</titleabbrev>
-<tgroup cols="4">
-<thead>
- <row>
- <entry>Numeric Type</entry>
- <entry>Storage</entry>
- <entry>Description</entry>
- <entry>Range</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>float4</entry>
- <entry>4 bytes</entry>
- <entry>Variable-precision</entry>
- <entry>6 decimal places</entry>
- </row>
- <row>
- <entry>float8</entry>
- <entry>8 bytes</entry>
- <entry>Variable-precision</entry>
- <entry>15 decimal places</entry>
- </row>
- <row>
- <entry>int2</entry>
- <entry>2 bytes</entry>
- <entry>Fixed-precision</entry>
- <entry>-32768 to +32767</entry>
- </row>
- <row>
- <entry>int4</entry>
- <entry>4 bytes</entry>
- <entry>Usual choice for fixed-precision</entry>
- <entry>-2147483648 to +2147483647</entry>
- </row>
- <row>
- <entry>int8</entry>
- <entry>8 bytes</entry>
- <entry>Very large range fixed-precision</entry>
- <entry>+/- > 18 decimal places</entry>
- </row>
- <row>
- <entry>serial</entry>
- <entry>4 bytes</entry>
- <entry>Identifer or cross-reference</entry>
- <entry>0 to +2147483647</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<para>
-The numeric types have a full set of corresponding arithmetic operators and
-functions. Refer to <xref endterm="math-opers" linkend="math-opers">
-and <xref endterm="math-funcs" linkend="math-funcs"> for more information.
+ floating point numbers.
</para>
-<para>
-The <type>serial</type> type is a special-case type constructed by
-<productname>Postgres</productname> from other existing components.
-It is typically used to create unique identifiers for table entries.
-In the current implementation, specifying
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Numeric Types</title>
+ <titleabbrev>Numerics</titleabbrev>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Numeric Type</entry>
+ <entry>Storage</entry>
+ <entry>Description</entry>
+ <entry>Range</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>float4</entry>
+ <entry>4 bytes</entry>
+ <entry>Variable-precision</entry>
+ <entry>6 decimal places</entry>
+ </row>
+ <row>
+ <entry>float8</entry>
+ <entry>8 bytes</entry>
+ <entry>Variable-precision</entry>
+ <entry>15 decimal places</entry>
+ </row>
+ <row>
+ <entry>int2</entry>
+ <entry>2 bytes</entry>
+ <entry>Fixed-precision</entry>
+ <entry>-32768 to +32767</entry>
+ </row>
+ <row>
+ <entry>int4</entry>
+ <entry>4 bytes</entry>
+ <entry>Usual choice for fixed-precision</entry>
+ <entry>-2147483648 to +2147483647</entry>
+ </row>
+ <row>
+ <entry>int8</entry>
+ <entry>8 bytes</entry>
+ <entry>Very large range fixed-precision</entry>
+ <entry>+/- > 18 decimal places</entry>
+ </row>
+ <row>
+ <entry>serial</entry>
+ <entry>4 bytes</entry>
+ <entry>Identifer or cross-reference</entry>
+ <entry>0 to +2147483647</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
-<programlisting>
+ <para>
+ The numeric types have a full set of corresponding arithmetic operators and
+ functions. Refer to <xref endterm="math-opers" linkend="math-opers">
+ and <xref endterm="math-funcs" linkend="math-funcs"> for more information.
+ </para>
+
+ <para>
+ The <type>int8</type> type may not be available on all platforms since
+ it relies on compiler support for this.
+ </para>
+
+ <sect2>
+ <title>The Serial Type</title>
+
+ <para>
+ The <type>serial</type> type is a special-case type constructed by
+ <productname>Postgres</productname> from other existing components.
+ It is typically used to create unique identifiers for table entries.
+ In the current implementation, specifying
+
+ <programlisting>
CREATE TABLE <replaceable class="parameter">tablename</replaceable> (<replaceable class="parameter">colname</replaceable> SERIAL);
-</programlisting>
+ </programlisting>
-is equivalent to specifying:
+ is equivalent to specifying:
-<programlisting>
+ <programlisting>
CREATE SEQUENCE <replaceable class="parameter">tablename</replaceable>_<replaceable class="parameter">colname</replaceable>_seq;
CREATE TABLE <replaceable class="parameter">tablename</replaceable>
(<replaceable class="parameter">colname</replaceable> INT4 DEFAULT nextval('<replaceable class="parameter">tablename</replaceable>_<replaceable class="parameter">colname</replaceable>_seq');
CREATE UNIQUE INDEX <replaceable class="parameter">tablename</replaceable>_<replaceable class="parameter">colname</replaceable>_key on <replaceable class="parameter">tablename</replaceable> (<replaceable class="parameter">colname</replaceable>);
-</programlisting>
+ </programlisting>
+
+ <caution>
+ <para>
+ The implicit sequence created for the <type>serial</type> type will
+ <emphasis>not</emphasis> be automatically removed when the
+ table is dropped.
+ </para>
+ </caution>
-<caution>
-<para>
-The implicit sequence created for the <type>serial</type> type will
-<emphasis>not</emphasis> be automatically removed when the table is dropped.
-So, the following commands executed in order will likely fail:
+ Implicit sequences supporting the <type>serial</type> are
+ not automatically dropped when a table containing a serial type
+ is dropped. So, the following commands executed in order will likely fail:
-<programlisting>
+ <programlisting>
CREATE TABLE <replaceable class="parameter">tablename</replaceable> (<replaceable class="parameter">colname</replaceable> SERIAL);
DROP TABLE <replaceable class="parameter">tablename</replaceable>;
CREATE TABLE <replaceable class="parameter">tablename</replaceable> (<replaceable class="parameter">colname</replaceable> SERIAL);
-</programlisting>
+ </programlisting>
+
+ The sequence will remain in the database until explicitly dropped using
+ <command>DROP SEQUENCE</command>.
+ </para>
+ </sect2>
+
+ </sect1>
-The sequence will remain in the database until explicitly dropped using
-<command>DROP SEQUENCE</command>.</para>
-</caution>
+ <sect1>
+ <title>Monetary Type</title>
+
+ <note>
+ <title>Obsolete Type</title>
+ <para>
+ The <type>money</type> is now obsolete. Use <type>numeric</type>
+ or <type>decimal</type> instead.
+ </para>
+ </note>
+
+ <para>
+ The <type>money</type> type supports US-style currency with
+ fixed decimal point representation.
+ If <productname>Postgres</productname> is compiled with USE_LOCALE
+ then the money type should use the monetary conventions defined for
+ <citetitle>locale(7)</citetitle>.
</para>
<para>
- The <type>int8</type> type may not be available on all platforms since
- it relies on compiler support for this.
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Monetary Types</title>
+ <titleabbrev>Money</titleabbrev>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Monetary Type</entry>
+ <entry>Storage</entry>
+ <entry>Description</entry>
+ <entry>Range</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>money</entry>
+ <entry>4 bytes</entry>
+ <entry>Fixed-precision</entry>
+ <entry>-21474836.48 to +21474836.47</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
</para>
-</sect1>
+ <para>
+ <type>numeric</type>
+ will replace the money type, and should be preferred.
+ </para>
-<sect1>
-<title>Monetary Type</title>
+ </sect1>
-<para>
-The <type>money</type> type supports US-style currency with
-fixed decimal point representation.
-If <productname>Postgres</productname> is compiled with USE_LOCALE
-then the money type should use the monetary conventions defined for
-<citetitle>locale(7)</citetitle>.
+ <sect1>
+ <title>Character Types</title>
+
+ <para>
+ <acronym>SQL92</acronym> defines two primary character types:
+ <type>char</type> and <type>varchar</type>.
+ <productname>Postgres</productname> supports these types, in
+ addition to the more general <type>text</type> type,
+ which unlike <type>varchar</type>
+ does not require an upper
+ limit to be declared on the size of the field.
</para>
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Monetary Types</title>
-<titleabbrev>Money</titleabbrev>
-<tgroup cols="4">
-<thead>
- <row>
- <entry>Monetary Type</entry>
- <entry>Storage</entry>
- <entry>Description</entry>
- <entry>Range</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>money</entry>
- <entry>4 bytes</entry>
- <entry>Fixed-precision</entry>
- <entry>-21474836.48 to +21474836.47</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Character Types</title>
+ <titleabbrev>Characters</titleabbrev>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Character Type</entry>
+ <entry>Storage</entry>
+ <entry>Recommendation</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>char</entry>
+ <entry>1 byte</entry>
+ <entry><acronym>SQL92</acronym>-compatible</entry>
+ <entry>Single character</entry>
+ </row>
+ <row>
+ <entry>char(n)</entry>
+ <entry>(4+n) bytes</entry>
+ <entry><acronym>SQL92</acronym>-compatible</entry>
+ <entry>Fixed-length blank padded</entry>
+ </row>
+ <row>
+ <entry>text</entry>
+ <entry>(4+x) bytes</entry>
+ <entry>Best choice</entry>
+ <entry>Variable-length</entry>
+ </row>
+ <row>
+ <entry>varchar(n)</entry>
+ <entry>(4+n) bytes</entry>
+ <entry><acronym>SQL92</acronym>-compatible</entry>
+ <entry>Variable-length with limit</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
<para>
- <type>numeric</type>
- will replace the money type, and should be preferred.
+ There is one other fixed-length character type.
+ The <type>name</type> type
+ only has one purpose and that is to provide
+ <productname>Postgres</productname> with a
+ special type to use for internal names.
+ It is not intended for use by the general user.
+ It's length is currently defined as 32 chars
+ but should be reference using NAMEDATALEN.
+ This is set at compile time and may change in a future release.
</para>
-</sect1>
-
-<sect1>
-<title>Character Types</title>
-
-<para>
-<acronym>SQL92</acronym> defines two primary character types:
- <type>char</type> and <type>varchar</type>.
-<productname>Postgres</productname> supports these types, in
-addition to the more general <type>text</type> type,
-which unlike <type>varchar</type>
-does not require an upper
-limit to be declared on the size of the field.
-</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Character Types</title>
-<titleabbrev>Characters</titleabbrev>
-<tgroup cols="4">
-<thead>
- <row>
- <entry>Character Type</entry>
- <entry>Storage</entry>
- <entry>Recommendation</entry>
- <entry>Description</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>char</entry>
- <entry>1 byte</entry>
- <entry><acronym>SQL92</acronym>-compatible</entry>
- <entry>Single character</entry>
- </row>
- <row>
- <entry>char(n)</entry>
- <entry>(4+n) bytes</entry>
- <entry><acronym>SQL92</acronym>-compatible</entry>
- <entry>Fixed-length blank padded</entry>
- </row>
- <row>
- <entry>text</entry>
- <entry>(4+x) bytes</entry>
- <entry>Best choice</entry>
- <entry>Variable-length</entry>
- </row>
- <row>
- <entry>varchar(n)</entry>
- <entry>(4+n) bytes</entry>
- <entry><acronym>SQL92</acronym>-compatible</entry>
- <entry>Variable-length with limit</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<para>
-There is one other fixed-length character type.
-The <type>name</type> type
-only has one purpose and that is to provide
-<productname>Postgres</productname> with a
-special type to use for internal names.
-It is not intended for use by the general user.
-It's length is currently defined as 32 chars
-but should be reference using NAMEDATALEN.
-This is set at compile time and may change in a future release.
-</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Specialty Character Type</title>
-<titleabbrev>Specialty Characters</titleabbrev>
-<tgroup cols="3">
-<thead>
- <row>
- <entry>Character Type</entry>
- <entry>Storage</entry>
- <entry>Description</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>name</entry>
- <entry>32 bytes</entry>
- <entry>Thirty-two character internal type</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-</sect1>
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Specialty Character Type</title>
+ <titleabbrev>Specialty Characters</titleabbrev>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Character Type</entry>
+ <entry>Storage</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>name</entry>
+ <entry>32 bytes</entry>
+ <entry>Thirty-two character internal type</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ </sect1>
<sect1>
<title>Date/Time Types</title>
</para>
</sect2>
-<sect2>
-<title>Date/Time Styles</title>
-
-<para>
-Output formats can be set to one of four styles:
-ISO-8601, <acronym>SQL</acronym> (Ingres), traditional
-Postgres, and German.
-
-<table tocentry="1">
-<title><productname>Postgres</productname> Date Styles</title>
-<titleabbrev>Styles</titleabbrev>
-<tgroup cols="3">
-<thead>
- <row>
- <entry>Style Specification</entry>
- <entry>Description</entry>
- <entry>Example</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>ISO</entry>
- <entry>ISO-8601 standard</entry>
- <entry>1997-12-17 07:37:16-08</entry>
- </row>
- <row>
- <entry><acronym>SQL</acronym></entry>
- <entry>Traditional style</entry>
- <entry>12/17/1997 07:37:16.00 PST</entry>
- </row>
- <row>
- <entry>Postgres</entry>
- <entry>Original style</entry>
- <entry>Wed Dec 17 07:37:16 1997 PST</entry>
- </row>
- <row>
- <entry>German</entry>
- <entry>Regional style</entry>
- <entry>17.12.1997 07:37:16.00 PST</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<para>
-The <acronym>SQL</acronym> style has European and non-European (US) variants,
-which determines whether month follows day or vica versa.
-
-<table tocentry="1">
-<title><productname>Postgres</productname> Date Order Conventions</title>
-<titleabbrev>Order</titleabbrev>
-<tgroup cols="3">
-<thead>
- <row>
- <entry>Style Specification</entry>
- <entry>Description</entry>
- <entry>Example</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>European</entry>
- <entry>Regional convention</entry>
- <entry>17/12/1997 15:37:16.00 MET</entry>
- </row>
- <row>
- <entry>NonEuropean</entry>
- <entry>Regional convention</entry>
- <entry>12/17/1997 07:37:16.00 PST</entry>
- </row>
- <row>
- <entry>US</entry>
- <entry>Regional convention</entry>
- <entry>12/17/1997 07:37:16.00 PST</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<para>
-There are several ways to affect the appearance of date/time types:
-
-<itemizedlist spacing="compact" mark="bullet">
-<listitem>
-<para>
-The PGDATESTYLE environment variable used by the backend directly
-on postmaster startup.
-</para>
-</listitem>
-<listitem>
-<para>
-The PGDATESTYLE environment variable used by the frontend libpq
-on session startup.
-</para>
-</listitem>
-<listitem>
-<para>
-<command>SET DATESTYLE</command> <acronym>SQL</acronym> command.
-</para>
-</listitem>
-</itemizedlist>
-</para>
+ <sect2>
+ <title>Date/Time Styles</title>
+
+ <para>
+ Output formats can be set to one of four styles:
+ ISO-8601, <acronym>SQL</acronym> (Ingres), traditional
+ Postgres, and German.
+
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Date Styles</title>
+ <titleabbrev>Styles</titleabbrev>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Style Specification</entry>
+ <entry>Description</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>ISO</entry>
+ <entry>ISO-8601 standard</entry>
+ <entry>1997-12-17 07:37:16-08</entry>
+ </row>
+ <row>
+ <entry><acronym>SQL</acronym></entry>
+ <entry>Traditional style</entry>
+ <entry>12/17/1997 07:37:16.00 PST</entry>
+ </row>
+ <row>
+ <entry>Postgres</entry>
+ <entry>Original style</entry>
+ <entry>Wed Dec 17 07:37:16 1997 PST</entry>
+ </row>
+ <row>
+ <entry>German</entry>
+ <entry>Regional style</entry>
+ <entry>17.12.1997 07:37:16.00 PST</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
<para>
- For <productname>Postgres</productname> v6.4 (and earlier)
+ The <acronym>SQL</acronym> style has European and non-European (US) variants,
+ which determines whether month follows day or vica versa.
+
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Date Order Conventions</title>
+ <titleabbrev>Order</titleabbrev>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Style Specification</entry>
+ <entry>Description</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>European</entry>
+ <entry>Regional convention</entry>
+ <entry>17/12/1997 15:37:16.00 MET</entry>
+ </row>
+ <row>
+ <entry>NonEuropean</entry>
+ <entry>Regional convention</entry>
+ <entry>12/17/1997 07:37:16.00 PST</entry>
+ </row>
+ <row>
+ <entry>US</entry>
+ <entry>Regional convention</entry>
+ <entry>12/17/1997 07:37:16.00 PST</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <para>
+ There are several ways to affect the appearance of date/time types:
+
+ <itemizedlist spacing="compact" mark="bullet">
+ <listitem>
+ <para>
+ The <envar>PGDATESTYLE</envar> environment variable used by the backend directly
+ on postmaster startup.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <envar>PGDATESTYLE</envar> environment variable used by the frontend libpq
+ on session startup.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <command>SET DATESTYLE</command> <acronym>SQL</acronym> command.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ For <productname>Postgres</productname> v6.5 (and earlier)
the default date/time style is
"non-European traditional Postgres".
In future releases, the default may become "ISO" (compatible with ISO-8601),
sets the time zone for the session.
</para>
</listitem>
- </itemizedlist></para>
+ </itemizedlist>
+ </para>
<para>
If an invalid time zone is specified,
</sect2>
<sect2>
- <title>datetime</title>
-
-<para>
-General-use date and time is input using a wide range of
-styles, including ISO-compatible, <acronym>SQL</acronym>-compatible, traditional
-<productname>Postgres</productname> (see section on "absolute time")
-and other permutations of date and time. Output styles can be ISO-compatible,
-<acronym>SQL</acronym>-compatible, or traditional
-<productname>Postgres</productname>, with the default set to be compatible
-with <productname>Postgres</productname> v6.0.
-</para>
-
-<para>
-<type>datetime</type> is specified using the following syntax:
-
-<programlisting>
+ <title><type>datetime</type></title>
+
+ <para>
+ General-use date and time is input using a wide range of
+ styles, including ISO-compatible, <acronym>SQL</acronym>-compatible, traditional
+ <productname>Postgres</productname> (see section on "absolute time")
+ and other permutations of date and time. Output styles can be ISO-compatible,
+ <acronym>SQL</acronym>-compatible, or traditional
+ <productname>Postgres</productname>, with the default set to be compatible
+ with <productname>Postgres</productname> v6.0.
+ </para>
+
+ <para>
+ <type>datetime</type> is specified using the following syntax:
+
+ <programlisting>
Year-Month-Day [ Hour : Minute : Second ] [AD,BC] [ Timezone ]
YearMonthDay [ Hour : Minute : Second ] [AD,BC] [ Timezone ]
Month Day [ Hour : Minute : Second ] Year [AD,BC] [ Timezone ]
Minute is 00, 01, ..., 59
Second is 00, 01, ..., 59 (60 for leap second)
Timezone is 3 characters or ISO offset to GMT
-</programlisting>
+ </programlisting>
</para>
-<para>
-Valid dates are from Nov 13 00:00:00 4013 BC GMT to far into the future.
-Timezones are either three characters (e.g. "GMT" or "PST") or ISO-compatible
-offsets to GMT (e.g. "-08" or "-08:00" when in Pacific Standard Time).
-Dates are stored internally in Greenwich Mean Time. Input and output routines
-translate time to the local time zone of the server.
-</para></sect2>
-
-<sect2>
-<title><type>timespan</type></title>
-
-<para>
-General-use time span is input using a wide range of
-syntaxes, including ISO-compatible, <acronym>SQL</acronym>-compatible,
-traditional
-<productname>Postgres</productname> (see section on "relative time")
- and other permutations of time span. Output formats can be ISO-compatible,
-<acronym>SQL</acronym>-compatible, or traditional
-<productname>Postgres</productname>,
-with the default set to be <productname>Postgres</productname>-compatible.
-Months and years are a "qualitative" time interval, and are stored separately
-from the other "quantitative" time intervals such as day or hour.
-For date arithmetic,
-the qualitative time units are instantiated in the context of the
-relevant date or time.
+ <para>
+ Valid dates are from Nov 13 00:00:00 4013 BC GMT to far into the future.
+ Timezones are either three characters (e.g. "GMT" or "PST") or ISO-compatible
+ offsets to GMT (e.g. "-08" or "-08:00" when in Pacific Standard Time).
+ Dates are stored internally in Greenwich Mean Time. Input and output routines
+ translate time to the local time zone of the server.
</para>
+ </sect2>
-<para>
-Time span is specified with the following syntax:
+ <sect2>
+ <title><type>timespan</type></title>
-<programlisting>
+ <para>
+ General-use time span is input using a wide range of
+ syntaxes, including ISO-compatible, <acronym>SQL</acronym>-compatible,
+ traditional
+ <productname>Postgres</productname> (see section on "relative time")
+ and other permutations of time span. Output formats can be ISO-compatible,
+ <acronym>SQL</acronym>-compatible, or traditional
+ <productname>Postgres</productname>,
+ with the default set to be <productname>Postgres</productname>-compatible.
+ Months and years are a "qualitative" time interval, and are stored separately
+ from the other "quantitative" time intervals such as day or hour.
+ For date arithmetic,
+ the qualitative time units are instantiated in the context of the
+ relevant date or time.
+ </para>
+
+ <para>
+ Time span is specified with the following syntax:
+
+ <programlisting>
Quantity Unit [Quantity Unit...] [Direction]
@ Quantity Unit [Direction]
where
Unit is <literal>second</literal>, <literal>minute</literal>, <literal>hour</literal>, <literal>day</literal>, <literal>week</literal>, <literal>month</literal>, <literal>year</literal>,
<literal>decade</literal>, <literal>century</literal>, <literal>millenium</literal>, or abbreviations or plurals of these units.
Direction is <literal>ago</literal>.
-</programlisting>
-</para>
-</sect2>
+ </programlisting>
+ </para>
+ </sect2>
-<sect2>
-<title>abstime</title>
+ <sect2>
+ <title><type>abstime</type></title>
<para>
Absolute time (<type>abstime</type>) is a limited-range (+/- 68 years) and
covers a larger range with greater precision.
</para>
-<para>
-Absolute time is specified using the following syntax:
+ <para>
+ Absolute time is specified using the following syntax:
-<programlisting>
+ <programlisting>
Month Day [ Hour : Minute : Second ] Year [ Timezone ]
where
Month is Jan, Feb, ..., Dec
Minute is 00, 01, ..., 59
Second is 00, 01, ..., 59
Year is 1901, 1902, ..., 2038
-</programlisting>
-</para>
+ </programlisting>
+ </para>
-<para>
+ <para>
Valid dates are from <literal>Dec 13 20:45:53 1901 GMT</literal>
to <literal>Jan 19 03:14:04 2038 GMT</literal>.
-<note>
-<title>Historical Note</title>
-<para>
-As of Version 3.0, times are no longer read and written
-using Greenwich Mean Time; the input and output routines default to
-the local time zone.</para>
-</note>
-
-All special values allowed for <type>datetime</type> are also
-allowed for "absolute time".
-</para>
-
-</sect2>
-
-<sect2>
-<title>reltime</title>
-
-<para>
-Relative time <type>reltime</type> is a limited-range (+/- 68 years)
- and limited-precision (1 sec) time span data type.
-<type>timespan</type> should be preferred, since it
-covers a larger range with greater precision and, more importantly,
-can distinguish between
-relative units (months and years) and quantitative units (days, hours, etc).
-Instead, reltime
-must force months to be exactly 30 days, so time arithmetic does not
-always work as expected.
- For example, adding one reltime <literal>year</literal> to abstime <literal>today</literal> does not
-produce today's date one year from
-now, but rather a date 360 days from today.
-</para>
-
-<para>
-<type>reltime</type> shares input and output routines with the other
-time span types.
-The section on <type>timespan</type> covers this in more detail.
-</para>
-
-</sect2>
-
-<sect2>
-<title><type>timestamp</type></title>
-
-<para>
-This is currently a limited-range absolute time which closely resembles the
-abstime
-data type. It shares the general input parser with the other date/time types.
-In future releases this type will absorb the capabilities of the
-<type>datetime</type> type
-and will move toward <acronym>SQL92</acronym> compliance.
-</para>
-
-<para>
-<type>timestamp</type> is specified using the same syntax as for
-<type>datetime</type>.
-</para>
-</sect2>
-
-<sect2>
-<title><type>interval</type></title>
-
-<para>
-<type>interval</type> is an <acronym>SQL92</acronym> data type which is
-currently mapped to the <type>timespan</type>
-<productname>Postgres</productname> data type.
-</para>
-</sect2>
-
-<sect2>
-<title>tinterval</title>
-
-<para>
-Time ranges are specified as:
-
-<programlisting>
+ <note>
+ <title>Historical Note</title>
+ <para>
+ As of Version 3.0, times are no longer read and written
+ using Greenwich Mean Time; the input and output routines default to
+ the local time zone.</para>
+ </note>
+
+ All special values allowed for <type>datetime</type> are also
+ allowed for "absolute time".
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title><type>reltime</type></title>
+
+ <para>
+ Relative time <type>reltime</type> is a limited-range (+/- 68 years)
+ and limited-precision (1 sec) time span data type.
+ <type>timespan</type> should be preferred, since it
+ covers a larger range with greater precision and, more importantly,
+ can distinguish between
+ relative units (months and years) and quantitative units (days, hours, etc).
+ Instead, reltime
+ must force months to be exactly 30 days, so time arithmetic does not
+ always work as expected.
+ For example, adding one reltime <literal>year</literal> to
+ abstime <literal>today</literal> does not
+ produce today's date one year from
+ now, but rather a date 360 days from today.
+ </para>
+
+ <para>
+ <type>reltime</type> shares input and output routines with the other
+ time span types.
+ The section on <type>timespan</type> covers this in more detail.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title><type>timestamp</type></title>
+
+ <para>
+ This is currently a limited-range absolute time which closely resembles the
+ abstime
+ data type. It shares the general input parser with the other date/time types.
+ In future releases this type will absorb the capabilities of the
+ <type>datetime</type> type
+ and will move toward <acronym>SQL92</acronym> compliance.
+ </para>
+
+ <para>
+ <type>timestamp</type> is specified using the same syntax as for
+ <type>datetime</type>.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title><type>interval</type></title>
+
+ <para>
+ <type>interval</type> is an <acronym>SQL92</acronym> data type which is
+ currently mapped to the <type>timespan</type>
+ <productname>Postgres</productname> data type.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title><type>tinterval</type></title>
+
+ <para>
+ Time ranges are specified as:
+
+ <programlisting>
[ 'abstime' 'abstime']
where
abstime is a time in the absolute time format.
-</programlisting>
-
-Special abstime values such as
-<literal>current', <literal>infinity' and <literal>-infinity' can be used.</literal></literal></literal>
-</para></sect2>
-
-</sect1>
-
-<sect1>
-<title>Boolean Type</title>
-
-<para>
-<productname>Postgres</productname> supports <type>bool</type> as
-the <acronym>SQL3</acronym> boolean type.
-<type>bool</type> can have one of only two states: 'true' or 'false'.
-A third state, 'unknown', is not
-implemented and is not suggested in <acronym>SQL3</acronym>;
-<acronym>NULL</acronym> is an
-effective substitute. <type>bool</type> can be used in any boolean expression,
-and boolean expressions
-always evaluate to a result compatible with this type.</para>
-
-<para>
-<type>bool</type> uses 1 byte of storage.
-</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Boolean Type</title>
-<titleabbrev>Booleans</titleabbrev>
-<tgroup cols="3">
-<thead>
- <row>
- <entry>State</entry>
- <entry>Output</entry>
- <entry>Input</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>True</entry>
- <entry>'t'</entry>
- <entry>TRUE, 't', 'true', 'y', 'yes', '1'</entry>
- </row>
- <row>
- <entry>False</entry>
- <entry>'f'</entry>
- <entry>FALSE, 'f', 'false', 'n', 'no', '0'</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-</sect1>
-
-<sect1>
-<title>Geometric Types</title>
-
-<para>
-Geometric types represent two-dimensional spatial objects.
-The most fundamental type,
-the point, forms the basis for all of the other types.
-</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname> Geometric Types</title>
-<titleabbrev>Geometrics</titleabbrev>
-<tgroup cols="4">
-<thead>
- <row>
- <entry>Geometric Type</entry>
- <entry>Storage</entry>
- <entry>Representation</entry>
- <entry>Description</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>point</entry>
- <entry>16 bytes</entry>
- <entry>(x,y)</entry>
- <entry>Point in space</entry>
- </row>
- <row>
- <entry>line</entry>
- <entry>32 bytes</entry>
- <entry>((x1,y1),(x2,y2))</entry>
- <entry>Infinite line</entry>
- </row>
- <row>
- <entry>lseg</entry>
- <entry>32 bytes</entry>
- <entry>((x1,y1),(x2,y2))</entry>
- <entry>Finite line segment</entry>
- </row>
- <row>
- <entry>box</entry>
- <entry>32 bytes</entry>
- <entry>((x1,y1),(x2,y2))</entry>
- <entry>Rectangular box</entry>
- </row>
- <row>
- <entry>path</entry>
- <entry>4+32n bytes</entry>
- <entry>((x1,y1),...)</entry>
- <entry>Closed path (similar to polygon)</entry>
- </row>
- <row>
- <entry>path</entry>
- <entry>4+32n bytes</entry>
- <entry>[(x1,y1),...]</entry>
- <entry>Open path</entry>
- </row>
- <row>
- <entry>polygon</entry>
- <entry>4+32n bytes</entry>
- <entry>((x1,y1),...)</entry>
- <entry>Polygon (similar to closed path)</entry>
- </row>
- <row>
- <entry>circle</entry>
- <entry>24 bytes</entry>
- <entry><(x,y),r></entry>
- <entry>Circle (center and radius)</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<para>
-A rich set of functions and operators is available to perform various geometric
-operations such as scaling, translation, rotation, and determining
-intersections.
-</para>
-
-<sect2>
-<title>Point</title>
+ </programlisting>
+
+ Special abstime values such as
+ <literal>current</literal>, <literal>infinity</literal> and
+ <literal>-infinity</literal> can be used.
+ </para>
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Boolean Type</title>
+
+ <para>
+ <productname>Postgres</productname> supports <type>bool</type> as
+ the <acronym>SQL3</acronym> boolean type.
+ <type>bool</type> can have one of only two states: 'true' or 'false'.
+ A third state, 'unknown', is not
+ implemented and is not suggested in <acronym>SQL3</acronym>;
+ <acronym>NULL</acronym> is an
+ effective substitute. <type>bool</type> can be used in any boolean expression,
+ and boolean expressions
+ always evaluate to a result compatible with this type.</para>
+
+ <para>
+ <type>bool</type> uses 1 byte of storage.
+ </para>
+
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Boolean Type</title>
+ <titleabbrev>Booleans</titleabbrev>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>State</entry>
+ <entry>Output</entry>
+ <entry>Input</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>True</entry>
+ <entry>'t'</entry>
+ <entry>TRUE, 't', 'true', 'y', 'yes', '1'</entry>
+ </row>
+ <row>
+ <entry>False</entry>
+ <entry>'f'</entry>
+ <entry>FALSE, 'f', 'false', 'n', 'no', '0'</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Geometric Types</title>
+
+ <para>
+ Geometric types represent two-dimensional spatial objects.
+ The most fundamental type,
+ the point, forms the basis for all of the other types.
+ </para>
+
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname> Geometric Types</title>
+ <titleabbrev>Geometrics</titleabbrev>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Geometric Type</entry>
+ <entry>Storage</entry>
+ <entry>Representation</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>point</entry>
+ <entry>16 bytes</entry>
+ <entry>(x,y)</entry>
+ <entry>Point in space</entry>
+ </row>
+ <row>
+ <entry>line</entry>
+ <entry>32 bytes</entry>
+ <entry>((x1,y1),(x2,y2))</entry>
+ <entry>Infinite line</entry>
+ </row>
+ <row>
+ <entry>lseg</entry>
+ <entry>32 bytes</entry>
+ <entry>((x1,y1),(x2,y2))</entry>
+ <entry>Finite line segment</entry>
+ </row>
+ <row>
+ <entry>box</entry>
+ <entry>32 bytes</entry>
+ <entry>((x1,y1),(x2,y2))</entry>
+ <entry>Rectangular box</entry>
+ </row>
+ <row>
+ <entry>path</entry>
+ <entry>4+32n bytes</entry>
+ <entry>((x1,y1),...)</entry>
+ <entry>Closed path (similar to polygon)</entry>
+ </row>
+ <row>
+ <entry>path</entry>
+ <entry>4+32n bytes</entry>
+ <entry>[(x1,y1),...]</entry>
+ <entry>Open path</entry>
+ </row>
+ <row>
+ <entry>polygon</entry>
+ <entry>4+32n bytes</entry>
+ <entry>((x1,y1),...)</entry>
+ <entry>Polygon (similar to closed path)</entry>
+ </row>
+ <row>
+ <entry>circle</entry>
+ <entry>24 bytes</entry>
+ <entry><(x,y),r></entry>
+ <entry>Circle (center and radius)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <para>
+ A rich set of functions and operators is available to perform various geometric
+ operations such as scaling, translation, rotation, and determining
+ intersections.
+ </para>
+
+ <sect2>
+ <title>Point</title>
<para>
Points are the fundamental two-dimensional building block for geometric types.
</para>
-<para>
-<type>point</type> is specified using the following syntax:
+ <para>
+ <type>point</type> is specified using the following syntax:
-<programlisting>
+ <programlisting>
( x , y )
x , y
where
x is the x-axis coordinate as a floating point number
y is the y-axis coordinate as a floating point number
-</programlisting>
-</para>
-</sect2>
+ </programlisting>
+ </para>
+ </sect2>
-<sect2>
-<title>Line Segment</title>
+ <sect2>
+ <title>Line Segment</title>
-<para>
-Line segments (lseg) are represented by pairs of points.
-</para>
+ <para>
+ Line segments (<type>lseg</type>) are represented by pairs of points.
+ </para>
-<para>
-<type>lseg</type> is specified using the following syntax:
-<programlisting>
+ <para>
+ <type>lseg</type> is specified using the following syntax:
+ <programlisting>
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1 , x2 , y2
where
(x1,y1) and (x2,y2) are the endpoints of the segment
-</programlisting>
-</para>
-</sect2>
+ </programlisting>
+ </para>
+ </sect2>
-<sect2>
-<title>Box</title>
+ <sect2>
+ <title>Box</title>
-<para>
-Boxes are represented by pairs of points which are opposite
-corners of the box.
-</para>
+ <para>
+ Boxes are represented by pairs of points which are opposite
+ corners of the box.
+ </para>
-<para>
+ <para>
<type>box</type> is specified using the following syntax:
-<programlisting>
+ <programlisting>
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1 , x2 , y2
where
(x1,y1) and (x2,y2) are opposite corners
-</programlisting>
-
-Boxes are output using the first syntax.
-The corners are reordered on input to store
-the lower left corner first and the upper right corner last.
-Other corners of the box can be entered, but the lower
-left and upper right corners are determined from the input and stored.
-</para>
-</sect2>
-
-<sect2>
-<title>Path</title>
-
-<para>
-Paths are represented by connected sets of points. Paths can be "open", where
-the first and last points in the set are not connected, and "closed",
-where the first and last point are connected. Functions
-<function>popen(p)</function>
-and
-<function>pclose(p)</function>
-are supplied to force a path to be open or closed, and functions
-<function>isopen(p)</function>
-and
-<function>isclosed(p)</function>
-are supplied to select either type in a query.
-</para>
-
-<para>
-path is specified using the following syntax:
-
-<programlisting>
+ </programlisting>
+
+ Boxes are output using the first syntax.
+ The corners are reordered on input to store
+ the lower left corner first and the upper right corner last.
+ Other corners of the box can be entered, but the lower
+ left and upper right corners are determined from the input and stored.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Path</title>
+
+ <para>
+ Paths are represented by connected sets of points. Paths can be "open", where
+ the first and last points in the set are not connected, and "closed",
+ where the first and last point are connected. Functions
+ <function>popen(p)</function>
+ and
+ <function>pclose(p)</function>
+ are supplied to force a path to be open or closed, and functions
+ <function>isopen(p)</function>
+ and
+ <function>isclosed(p)</function>
+ are supplied to select either type in a query.
+ </para>
+
+ <para>
+ <type>path</type> is specified using the following syntax:
+
+ <programlisting>
( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
( x1 , y1 ) , ... , ( xn , yn )
(x1,y1),...,(xn,yn) are points 1 through n
a leading "[" indicates an open path
a leading "(" indicates a closed path
-</programlisting>
-Paths are output using the first syntax.
-Note that <productname>Postgres</productname> versions prior to
-v6.1 used a format for paths which had a single leading parenthesis,
-a "closed" flag,
-an integer count of the number of points, then the list of points followed by a
-closing parenthesis.
-The built-in function <function>upgradepath</function> is supplied to convert
-paths dumped and reloaded from pre-v6.1 databases.
-</para>
-</sect2>
-
-<sect2>
-<title>Polygon</title>
-
-<para>
-Polygons are represented by sets of points. Polygons should probably be
-considered equivalent to closed paths, but are stored differently
-and have their own set of support routines.
-</para>
-
-<para>
-<type>polygon</type> is specified using the following syntax:
-
-<programlisting>
+ </programlisting>
+
+ Paths are output using the first syntax.
+ Note that <productname>Postgres</productname> versions prior to
+ v6.1 used a format for paths which had a single leading parenthesis,
+ a "closed" flag,
+ an integer count of the number of points, then the list of points followed by a
+ closing parenthesis.
+ The built-in function <function>upgradepath</function> is supplied to convert
+ paths dumped and reloaded from pre-v6.1 databases.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Polygon</title>
+
+ <para>
+ Polygons are represented by sets of points. Polygons should probably be
+ considered equivalent to closed paths, but are stored differently
+ and have their own set of support routines.
+ </para>
+
+ <para>
+ <type>polygon</type> is specified using the following syntax:
+
+ <programlisting>
( ( x1 , y1 ) , ... , ( xn , yn ) )
( x1 , y1 ) , ... , ( xn , yn )
( x1 , y1 , ... , xn , yn )
x1 , y1 , ... , xn , yn
where
(x1,y1),...,(xn,yn) are points 1 through n
-</programlisting>
-
-Polygons are output using the first syntax.
-Note that <productname>Postgres</productname> versions prior to
-v6.1 used a format for polygons which had a single leading parenthesis, the list
-of x-axis coordinates, the list of y-axis coordinates,
-followed by a closing parenthesis.
-The built-in function <function>upgradepoly</function> is supplied to convert
-polygons dumped and reloaded from pre-v6.1 databases.
-</para>
-</sect2>
+ </programlisting>
+
+ Polygons are output using the first syntax.
+ Note that <productname>Postgres</productname> versions prior to
+ v6.1 used a format for polygons which had a single leading parenthesis, the list
+ of x-axis coordinates, the list of y-axis coordinates,
+ followed by a closing parenthesis.
+ The built-in function <function>upgradepoly</function> is supplied to convert
+ polygons dumped and reloaded from pre-v6.1 databases.
+ </para>
+ </sect2>
-<sect2>
-<title>Circle</title>
+ <sect2>
+ <title>Circle</title>
-<para>
-Circles are represented by a center point and a radius.
-</para>
+ <para>
+ Circles are represented by a center point and a radius.
+ </para>
-<para>
-circle is specified using the following syntax:
+ <para>
+ <type>circle</type> is specified using the following syntax:
-<programlisting>
+ <programlisting>
< ( x , y ) , r >
( ( x , y ) , r )
( x , y ) , r
where
(x,y) is the center of the circle
r is the radius of the circle
-</programlisting>
-
-Circles are output using the first syntax.
-</para>
-</sect2>
-
-</sect1>
-
-<sect1>
-<title>IP Version 4 Networks and Host Addresses</title>
-
-<para>
-The <type>cidr</type> type stores networks specified
-in <acronym>CIDR</acronym> (Classless Inter-Domain Routing) notation.
-The <type>inet</type> type stores hosts and networks in CIDR notation using a simple
-variation in representation to represent simple host TCP/IP addresses.
-</para>
-
-<para>
-<table tocentry="1">
-<title><productname>Postgres</productname>IP Version 4 Types</title>
-<titleabbrev>IPV4</titleabbrev>
-<tgroup cols="4">
-<thead>
- <row>
- <entry>IPV4 Type</entry>
- <entry>Storage</entry>
- <entry>Description</entry>
- <entry>Range</entry>
- </row>
-</thead>
-<tbody>
- <row>
- <entry>cidr</entry>
- <entry>variable</entry>
- <entry>CIDR networks</entry>
- <entry>Valid IPV4 CIDR blocks</entry>
- </row>
- <row>
- <entry>inet</entry>
- <entry>variable</entry>
- <entry>nets and hosts</entry>
- <entry>Valid IPV4 CIDR blocks</entry>
- </row>
-</tbody>
-</tgroup>
-</table>
-</para>
-
-<sect2>
-<title>CIDR</title>
-
-<para>
-The <type>cidr</type> type holds a CIDR network.
-The format for specifying classless networks is <replaceable class="parameter">x.x.x.x/y</replaceable>
- where <replaceable class="parameter">x.x.x.x</replaceable> is the
-network and <replaceable class="parameter">/y</replaceable> is the number of bits in the netmask.
-If <replaceable class="parameter">/y</replaceable> omitted, it is calculated using assumptions from
-the older classfull naming system except that it is extended to include at least
-all of the octets in the input.
-</para>
-
-<para>
-Here are some examples:
+ </programlisting>
+
+ Circles are output using the first syntax.
+ </para>
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>IP Version 4 Networks and Host Addresses</title>
+
+ <para>
+ The <type>cidr</type> type stores networks specified
+ in <acronym>CIDR</acronym> (Classless Inter-Domain Routing) notation.
+ The <type>inet</type> type stores hosts and networks in CIDR notation using a simple
+ variation in representation to represent simple host TCP/IP addresses.
+ </para>
+
+ <para>
+ <table tocentry="1">
+ <title><productname>Postgres</productname>IP Version 4 Types</title>
+ <titleabbrev>IPV4</titleabbrev>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>IPV4 Type</entry>
+ <entry>Storage</entry>
+ <entry>Description</entry>
+ <entry>Range</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>cidr</entry>
+ <entry>variable</entry>
+ <entry>CIDR networks</entry>
+ <entry>Valid IPV4 CIDR blocks</entry>
+ </row>
+ <row>
+ <entry>inet</entry>
+ <entry>variable</entry>
+ <entry>nets and hosts</entry>
+ <entry>Valid IPV4 CIDR blocks</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <sect2>
+ <title>CIDR</title>
+
+ <para>
+ The <type>cidr</type> type holds a CIDR network.
+ The format for specifying classless networks is
+ <replaceable class="parameter">x.x.x.x/y</replaceable>
+ where <replaceable class="parameter">x.x.x.x</replaceable> is the
+ network and <replaceable class="parameter">/y</replaceable> is
+ the number of bits in the netmask.
+ If <replaceable class="parameter">/y</replaceable> omitted, it is
+ calculated using assumptions from
+ the older classfull naming system except that it is extended to include at least
+ all of the octets in the input.
+ </para>
+
+ <para>
+ Here are some examples:
<table tocentry="1">
<title><productname>Postgres</productname>IP Types Examples</title>
<sect2>
<title id="inet-type"><type>inet</type></title>
-<para>
-The <type>inet</type> type is designed to hold, in one field, all of the information
-about a host including the CIDR-style subnet that it is in.
-Note that if you want to store proper CIDR networks,
-you should use the <type>cidr</type> type.
-The <type>inet</type> type is similar to the <type>cidr</type> type except that the bits in the
-host part can be non-zero.
-Functions exist to extract the various elements of the field.
-</para>
-
-<para>
+ <para>
+ The <type>inet</type> type is designed to hold, in one field, all of the information
+ about a host including the CIDR-style subnet that it is in.
+ Note that if you want to store proper CIDR networks,
+ you should use the <type>cidr</type> type.
+ The <type>inet</type> type is similar to the <type>cidr</type>
+ type except that the bits in the
+ host part can be non-zero.
+ Functions exist to extract the various elements of the field.
+ </para>
+
+ <para>
The input format for this function is
- <replaceable class="parameter">x.x.x.x/y</replaceable>
-where <replaceable class="parameter">x.x.x.x</replaceable> is
-an internet host and <replaceable class="parameter">y</replaceable>
-is the number of bits in the netmask.
-If the <replaceable class="parameter">/y</replaceable> part is left off,
-it is treated as <literal>/32</literal>.
-On output, the <replaceable class="parameter">/y</replaceable> part is not printed
-if it is <literal>/32</literal>.
-This allows the type to be used as a straight host type by just leaving off
-the bits part.
-</para></sect2>
-</sect1>
-
-</chapter>
+ <replaceable class="parameter">x.x.x.x/y</replaceable>
+ where <replaceable class="parameter">x.x.x.x</replaceable> is
+ an internet host and <replaceable class="parameter">y</replaceable>
+ is the number of bits in the netmask.
+ If the <replaceable class="parameter">/y</replaceable> part is left off,
+ it is treated as <literal>/32</literal>.
+ On output, the <replaceable class="parameter">/y</replaceable> part is not printed
+ if it is <literal>/32</literal>.
+ This allows the type to be used as a straight host type by just leaving off
+ the bits part.
+ </para>
+ </sect2>
+ </sect1>
+
+ </chapter>
<!-- Keep this comment at the end of the file
Local variables: