OSDN Git Service

Add information on new timestamp and timestamptz data types.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 28 Sep 2001 08:15:35 +0000 (08:15 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 28 Sep 2001 08:15:35 +0000 (08:15 +0000)
Start chapter on recovery techniques. Still needs work for release.

doc/src/sgml/datatype.sgml
doc/src/sgml/datetime.sgml
doc/src/sgml/func.sgml
doc/src/sgml/manage.sgml
doc/src/sgml/recovery.sgml

index 20863a1..6466394 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.63 2001/09/13 15:55:22 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.64 2001/09/28 08:15:35 thomas Exp $
 -->
 
  <chapter id="datatype">
@@ -229,13 +229,19 @@ $Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.63 2001/09/13 15:55:22 pe
 
       <row>
        <entry><type>time with time zone</type></entry>
-       <entry></entry>
+       <entry>timetz</entry>
        <entry>time of day, including time zone</entry>
       </row>
 
       <row>
+       <entry><type>timestamp without time zone</type></entry>
+       <entry>timestamp</entry>
+       <entry>date and time</entry>
+      </row>
+
+      <row>
        <entry><type>timestamp [ with time zone ]</type></entry>
-       <entry></entry>
+       <entry>timestamptz</entry>
        <entry>date and time</entry>
       </row>
      </tbody>
@@ -981,7 +987,7 @@ SELECT b, char_length(b) FROM test2;
       </thead>
       <tbody>
        <row>
-        <entry><type>timestamp</type></entry>
+        <entry><type>timestamp without time zone</type></entry>
         <entry>both date and time</entry>
         <entry>8 bytes</entry>
         <entry>4713 BC</entry>
@@ -990,10 +996,10 @@ SELECT b, char_length(b) FROM test2;
        </row>
        <row>
         <entry><type>timestamp [ with time zone ]</type></entry>
-        <entry>date and time with time zone</entry>
+        <entry>both date and time</entry>
         <entry>8 bytes</entry>
-        <entry>1903 AD</entry>
-        <entry>2037 AD</entry>
+        <entry>4713 BC</entry>
+        <entry>AD 1465001</entry>
         <entry>1 microsecond / 14 digits</entry>
        </row>
        <row>
@@ -1034,21 +1040,37 @@ SELECT b, char_length(b) FROM test2;
 
     <note>
      <para>
-      To ensure compatibility to earlier versions of <productname>Postgres</productname>
-      we also continue to provide <type>datetime</type> (equivalent to <type>timestamp</type>) and
-      <type>timespan</type> (equivalent to <type>interval</type>),
-      however support for these is now restricted to having an
-      implicit translation to <type>timestamp</type> and
-      <type>interval</type>.
-      The types <type>abstime</type>
-      and <type>reltime</type> are lower precision types which are used internally.
-      You are discouraged from using any of these types in new
-      applications and are encouraged to move any old
-      ones over when appropriate. Any or all of these internal types might disappear in a future release.
+      Time zones, and time zone conventions, are influenced by
+      political conventions, not just physical effects. Time zones have
+      become somewhat standardized during the 1900's, but continue to
+      be prone to arbitrary changes with time.
+      <productname>PostgreSQL</productname> uses your operating
+      system's underlying features to provide time zone
+      support, and these systems usually contain information for only
+      the time period 1902 through 2038 (corresponding to the full
+      range of conventional Unix system time).
+      <type>timestamp with time zone</type> will use time zone
+      information only within that year range, and assumes that times
+      are in UTC outside that range.
      </para>
     </note>
    </para>
 
+   <para>
+    To ensure compatibility to earlier versions of <productname>Postgres</productname>
+    we also continue to provide <type>datetime</type>
+    (equivalent to <type>timestamp</type>) and
+    <type>timespan</type> (equivalent to <type>interval</type>),
+    however support for these is now restricted to having an
+    implicit translation to <type>timestamp</type> and
+    <type>interval</type>.
+    The types <type>abstime</type>
+    and <type>reltime</type> are lower precision types which are used internally.
+    You are discouraged from using any of these types in new
+    applications and are encouraged to move any old
+    ones over when appropriate. Any or all of these internal types
+    might disappear in a future release.
+   </para>
 
    <sect2 id="datatype-datetime-input">
     <title>Date/Time Input</title>
@@ -1266,6 +1288,10 @@ SELECT b, char_length(b) FROM test2;
       <primary>time</primary>
       <secondary>data type</secondary>
      </indexterm>
+     <indexterm>
+      <primary>time without time zone</primary>
+      <secondary>time</secondary>
+     </indexterm>
 
      <para>
       Per SQL99, this type can be referenced as <type>time</type> and
@@ -1330,11 +1356,21 @@ SELECT b, char_length(b) FROM test2;
     <sect3>
      <title><type>time with time zone</type></title>
 
+     <indexterm>
+      <primary>time with time zone</primary>
+      <secondary>data type</secondary>
+     </indexterm>
+     <indexterm>
+      <primary>time</primary>
+      <secondary>data type</secondary>
+     </indexterm>
+
      <para>
       This type is defined by SQL92, but the definition exhibits
-      fundamental deficiencies that render the type nearly useless. In
+      properties which lead to questionable usefulness. In
       most cases, a combination of <type>date</type>,
-      <type>time</type>, and <type>timestamp</type>
+      <type>time</type>, <type>timestamp without time zone</type>
+      and <type>timestamp with time zone</type>
       should provide a complete range of date/time functionality
       required by any application.
      </para>
@@ -1382,7 +1418,44 @@ SELECT b, char_length(b) FROM test2;
     </sect3>
 
     <sect3>
-    <title><type>timestamp</type></title>
+    <title><type>timestamp without time zone</type></title>
+
+    <indexterm>
+     <primary>timestamp without time zone</primary>
+     <secondary>data type</secondary>
+    </indexterm>
+
+     <para>
+      Valid input for the <type>timestamp without time zone</type>
+      type consists of a concatenation
+      of a date and a time, followed by an optional <literal>AD</literal> or
+      <literal>BC</literal>, followed by an optional time zone. (See below.)
+      Thus
+
+      <programlisting>
+1999-01-08 04:05:06
+      </programlisting>
+
+      is a valid <type>timestamp without time zone</type> value that
+      is <acronym>ISO</acronym>-compliant.
+      In addition, the wide-spread format
+
+      <programlisting>
+January 8 04:05:06 1999 PST
+      </programlisting>
+      is supported.
+     </para>
+
+     <para>
+      For <type>timestamp without time zone</type>, any explicit time
+      zone specified in the input is silently swallowed. That is, the
+      resulting date/time value is derived from the explicit date/time
+      fields in the input value, and is not adjusted for time zone.
+     </para>
+    </sect3>
+
+    <sect3>
+    <title><type>timestamp with time zone</type></title>
 
     <indexterm>
      <primary>timestamp</primary>
@@ -1500,10 +1573,12 @@ January 8 04:05:06 1999 PST
        </row>
        </thead>
        <tbody>
+<!--
        <row>
         <entry>current</entry>
         <entry>Current transaction time, deferred</entry>
        </row>
+-->
        <row>
         <entry>epoch</entry>
         <entry>1970-01-01 00:00:00+00 (Unix system time zero)</entry>
index 5fceb8c..23e6c58 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/datetime.sgml,v 2.21 2001/09/13 15:55:22 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/datetime.sgml,v 2.22 2001/09/28 08:15:35 thomas Exp $
 Date/time details
 -->
 
@@ -14,7 +14,7 @@ Date/time details
   </indexterm>
 
   <para>
-   <productname>Postgres</productname> must have internal tabular
+   <productname>Postgres</productname> contains internal tabular
    information for time zone decoding, since there is no *nix standard
    system interface to provide access to general, cross-timezone
    information. The underlying OS <emphasis>is</emphasis> used to
index 0a8b2f6..0de8db1 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.73 2001/09/20 16:41:26 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.74 2001/09/28 08:15:35 thomas Exp $ -->
 
 <chapter id="functions">
  <title>Functions and Operators</title>
   the functions and operators described in this chapter, with the
   exception of the most trivial arithmetic and comparison operators
   and some explicitly marked functions, are not specified by the <acronym>SQL</acronym>
-  standard.  However, many other <acronym>RDBMS</acronym> packages provide a lot of the
-  same or similar functions, and some of the ones provided in
-  <productname>Postgres</productname> have in fact been inspired by
-  other implementations.
+  standard. Some of this extended functionality is present in other
+  <acronym>RDBMS</acronym> products, and in many cases this
+  functionality is compatible and consistant between various products.
  </para>
 
 
  <sect1 id="functions-math">
   <title>Mathematical Functions and Operators</title>
 
+  <para>
+   Mathematical operators are provided for many
+   <productname>PostgreSQL</productname> types. For types without
+   common mathematical conventions for all possible permutations 
+   (e.g. date/time types) we
+   describe the actual behavior in subsequent sections.
+  </para>
+
   <table>
-   <title>Mathematical Operators</TITLE>
+   <title>Mathematical Operators</title>
 
    <tgroup cols="4">
     <thead>
 
 
   <sect1 id="functions-formatting">
-   <title>Formatting Functions</title>
+   <title>Multi-type Formatting Functions</title>
 
    <indexterm zone="functions-formatting">
     <primary>formatting</primary>
 
 
   <sect1 id="functions-datetime">
-   <title>Date/Time Functions</title>
+   <title>Date/Time Functions and Operators</title>
 
    <para>
     <xref linkend="functions-datetime-table"> shows the available
-    functions for date/time value processing.  The basic arithmetic
-    operators (<literal>+</literal>, <literal>*</literal>, etc.) are
-    also available.  For formatting functions, refer to <xref
+    functions for date/time value processing.  
+    <xref linkend="operators-datetime-table"> illustrates the
+    behaviors of the basic arithmetic
+    operators (<literal>+</literal>, <literal>*</literal>, etc.).
+    For formatting functions, refer to <xref
     linkend="functions-formatting">.  You should be familiar with the
     background information on date/time data types (see <xref
     linkend="datatype-datetime">).
    </para>
 
+   <para>
+    The date/time operators described below behave similarly for types
+    involving time zones as well as those without.
+
+    <table id="operators-datetime-table">
+     <title>Date/Time Operators</title>
+
+     <tgroup cols="4">
+      <thead>
+       <row>
+        <entry>Name</entry>
+        <entry>Example</entry>
+        <entry>Result</entry>
+       </row>
+      </thead>
+
+      <tbody>
+       <row>
+        <entry> <type><literal>+</literal> </entry>
+        <entry><type>timestamp</type> '2001-09-28 01:00' + <type>interval</type> '23 hours'</entry>
+        <entry><type>timestamp</type> '2001-09-29 00:00'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>+</literal> </entry>
+        <entry><type>date</type> '2001-09-28' + <type>interval</type> '1 hour'</entry>
+        <entry><type>timestamp</type> '2001-09-28 01:00'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>+</literal> </entry>
+        <entry><type>time</type> '01:00' + <type>interval</type> '3 hours'</entry>
+        <entry><type>time</type> '04:00'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>-</literal> </entry>
+        <entry><type>timestamp</type> '2001-09-28 23:00' - <type>interval</type> '23 hours'</entry>
+        <entry><type>timestamp</type> '2001-09-28'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>-</literal> </entry>
+        <entry><type>date</type> '2001-09-28' + <type>interval</type> '1 hour'</entry>
+        <entry><type>timestamp</type> '2001-09-27 23:00'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>-</literal> </entry>
+        <entry><type>time</type> '05:00' + <type>interval</type> '2 hours'</entry>
+        <entry><type>time</type> '03:00'</entry>
+       </row>
+
+       <row>
+        <entry> <type><literal>-</literal> </entry>
+        <entry><type>interval</type> '2 hours' - <type>time</type> '05:00'</entry>
+        <entry><type>time</type> '03:00:00'</entry>
+       </row>
+
+       <row>
+        <entry> <literal>*</literal> </entry>
+        <entry><type>interval</type> '1 hour' * <type>int</type> '3'</entry>
+        <entry><type>interval</type> '03:00'</entry>
+       </row>
+
+       <row>
+        <entry> <literal>/</literal> </entry>
+        <entry><type>interval</type> '1 hour' / <type>int</type> '3'</entry>
+        <entry><type>interval</type> '00:20'</entry>
+       </row>
+      </tbody>
+     </tgroup>
+    </table>
+   </para>
+
+   <para>
+    The date/time functions are summarized below, with additional
+    details in subsequent sections.
+
     <table id="functions-datetime-table">
      <title>Date/Time Functions</title>
      <tgroup cols="4">
       </tbody>
      </tgroup>
     </table>
-
+   </para>
 
   <sect2 id="functions-datetime-extract">
    <title><function>EXTRACT</function>, <function>date_part</function></title>
@@ -2546,7 +2634,7 @@ SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');
       <listitem>
        <para>
         For <type>date</type> and <type>timestamp</type> values, the
-        number of seconds since 1970-01-01 00:00:00 (Result may be
+        number of seconds since 1970-01-01 00:00:00-00 (Result may be
         negative.); for <type>interval</type> values, the total number
         of seconds in the interval
        </para>
index f89e316..0b58ddd 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/Attic/manage.sgml,v 1.16 2001/09/13 15:55:23 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/Attic/manage.sgml,v 1.17 2001/09/28 08:15:35 thomas Exp $
 -->
 
  <Chapter Id="manage">
@@ -31,7 +31,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/manage.sgml,v 1.16 2001/09/13 15:55:2
    <Title>Database Creation</Title>
 
    <Para>
-    Databases are created by the <Command>create database</Command> issued from
+    Databases are created by the <Command>CREATE DATABASE</Command> issued from
     within <ProductName>Postgres</ProductName>. <Application>createdb</Application> is a command-line
     utility provided to give the same functionality from outside <ProductName>Postgres</ProductName>.
    </Para>
index ba19b6e..e4e74fd 100644 (file)
@@ -1,8 +1,117 @@
-<Chapter Id="recovery">
-<Title>Database Recovery</Title>
+<chapter Id="failure">
+ <title>Database Failures</title>
 
-<Para>
-This section needs to be written. Volunteers?
-</Para>
+ <para>
+  Database failures (or the possibility of such) must be assumed to be
+  lurking, ready to strike at some time in the future. A prudent
+  database administrator will plan for the inevitability of failures
+  of all possible kinds, and will have appropriate plans and
+  procedures in place <emphasis>before</emphasis> the failure occurs.
+ </para>
 
-</Chapter>
+ <para>
+  Database recovery is necessary in the event of hardware or software
+  failure. There are several categories of failures; some of these
+  require relatively minor adjustments to the database, while others
+  may depend on the existance of previously prepared database dumps
+  and other recovery data sets. It should be emphasized that if your
+  data is important and/or difficult to regenerate, then you should
+  have considered and prepared for various failure scenarios.
+ </para>
+
+ <sect1>
+  <title>Disk Filled</title>
+
+  <para>
+   A filled data disk may result in subsequent corruption of database
+   indices, but not of the fundamental data tables. If the WAL files
+   are on the same disk (as is the case for a default configuration)
+   then a filled disk during database initialization may result in
+   corrupted or incomplete WAL files. This failure condition is
+   detected and the database will refuse to start up. You must free
+   up additional space on the disk (or move the WAL area to another
+   disk; see <xref id=xxx></xref>) and then restart the
+   <application>postmaster</application> to recover from this condition.
+  </para>
+ </sect1>
+
+ <sect1>
+  <title>Disk Failed</title>
+
+  <para>
+   Failure of any disk (or of a logical storage device such as a RAID
+   subsystem) involved with an active database will require
+   that the database be recovered from a previously prepared database
+   dump. This dump must be prepared using
+   <application>pg_dumpall</application>, and updates to the database
+   occuring after the database installation was dumped will be lost. 
+  </para>
+ </sect1>
+
+ <sect1>
+  <title>File Corrupted</title>
+
+  <para>
+  </para>
+ </sect1>
+
+ <sect1>
+  <title>Table Corrupted</title>
+
+  <para>
+  </para>
+ </sect1>
+
+ <sect1>
+  <title></title>
+
+  <para>
+  </para>
+ </sect1>
+
+ <sect1>
+  <title></title>
+
+  <para>
+  </para>
+ </sect1>
+
+ <sect1>
+  <title></title>
+
+  <para>
+  </para>
+ </sect1>
+</chapter>
+
+<chapter Id="recovery">
+ <title>Database Recovery</title>
+
+ <para>
+  Database recovery is necessary in the event of hardware or software
+  failure. There are several categories of failures; some of these
+  require relatively minor adjustments to the database, while others
+  may depend on the existance of previously prepared database dumps
+  and other recovery data sets. It should be emphasized that if your
+  data is important and/or difficult to regenerate, then you should
+  have considered and prepared for various failure scenarios.
+ </para>
+
+ <sect1>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode:sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document: ("postgres.sgml" "set" "book" "chapter")
+sgml-default-dtd-file:"./reference.ced"
+sgml-exposed-tags:nil
+sgml-local-ecat-files:nil
+End:
+-->