Re: Removal of backward-compatibility docs mentions - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Removal of backward-compatibility docs mentions
Date
Msg-id 200604230336.k3N3acd20698@candle.pha.pa.us
Whole thread Raw
In response to Re: Removal of backward-compatibility docs mentions  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
> The attached patch removes or minimizes some documentation mentions of
> backward compatibility for release 7.2 and earlier.  I have not altered
> any mentions of release 7.3 or later.  The release notes were not
> modified, so the changes are still documented, just not in the main
> docs.

Patch applied.

---------------------------------------------------------------------------


Bruce Momjian wrote:
>
> I have made the modifications you suggested.  Any others?
>
> ---------------------------------------------------------------------------
>
> Neil Conway wrote:
> > [ Sorry for the two copies, Bruce: I forgot to CC the list previously ]
> >
> > On Mon, 2006-03-20 at 13:57 -0500, Bruce Momjian wrote:
> > > The attached patch removes or minimizes some documentation mentions of
> > > backward compatibility for release 7.2 and earlier.
> >
> > I don't think it's a net win to get rid of this text, as it describes
> > useful alternatives to the GUC variable:
> >
> > *** doc/src/sgml/config.sgml    10 Mar 2006 19:10:47 -0000      1.52
> > --- doc/src/sgml/config.sgml    20 Mar 2006 18:40:44 -0000
> > ***************
> > *** 3789,3801 ****
> >         <listitem>
> >          <para>
> >           This controls the inheritance semantics, in particular whether
> > !         subtables are included by various commands by default. They
> > were
> > !         not included in versions prior to 7.1. If you need the old
> > !         behavior you can set this variable to <literal>off</>, but in
> > !         the long run you are encouraged to change your applications to
> > !         use the <literal>ONLY</literal> key word to exclude subtables.
> > !         See <xref linkend="ddl-inherit"> for more information about
> > !         inheritance.
> >          </para>
> >         </listitem>
> >        </varlistentry>
> > --- 3789,3796 ----
> >         <listitem>
> >          <para>
> >           This controls the inheritance semantics, in particular whether
> > !         subtables are included by various commands by default. This
> > was
> > !         added for compatibility with releases prior to 7.1.
> >          </para>
> >         </listitem>
> >        </varlistentry>
> >
> > *** doc/src/sgml/libpq.sgml     10 Mar 2006 19:10:48 -0000      1.206
> > --- doc/src/sgml/libpq.sgml     20 Mar 2006 18:41:05 -0000
> > ***************
> > *** 689,699 ****
> >   functions described below to get
> >   at the contents of <structname>PGconn</structname>.  Avoid directly
> > referencing the fields of the
> >   <structname>PGconn</> structure because they are subject to change in
> > the future.
> > - (Beginning in <productname>PostgreSQL</productname> release 6.4, the
> > - definition of the <type>struct</type> behind <structname>PGconn</> is
> > not even provided in <filename>libpq-fe.h</filename>.
> > - If you have old code that accesses <structname>PGconn</structname>
> > fields directly, you can keep using it
> > - by including <filename>libpq-int.h</filename> too, but you are
> > encouraged to fix the code
> > - soon.)
> >   </para>
> >   </tip>
> >
> > Removing the information about libpq-int.h but keeping the suggestion to
> > "avoid directly referencing fields of the PGconn structure" doesn't seem
> > consistent: the user *can't* directly reference fields without including
> > libpq-int.h. So I think this hunk should be kept.
> >
> > The second hunk modified in maintenance.sgml removes some useful
> > information (ANALYZE collects rows by random sampling).
> >
> > >From storage.sgml:
> >
> > !  Since <productname>PostgreSQL</productname> uses a fixed page size
> > (commonly
> > ! 8Kb), and does not allow tuples to span multiple pages, so it's not
> > possible to
> > ! store very large field values directly.
> >
> > That is poorly phrased ("Since ..., so it's not").
> >
> > -Neil
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: if posting/reading through Usenet, please send an appropriate
> >        subscribe-nomail command to majordomo@postgresql.org so that your
> >        message can get through to the mailing list cleanly
> >
>
> --
>   Bruce Momjian   http://candle.pha.pa.us
>   SRA OSS, Inc.   http://www.sraoss.com
>
>   + If your life is a hard drive, Christ can be your backup. +

> Index: doc/src/sgml/array.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/array.sgml,v
> retrieving revision 1.48
> diff -c -c -r1.48 array.sgml
> *** doc/src/sgml/array.sgml    19 Nov 2005 01:50:08 -0000    1.48
> --- doc/src/sgml/array.sgml    20 Mar 2006 23:42:29 -0000
> ***************
> *** 559,566 ****
>      embedded in element values will be backslash-escaped.  For numeric
>      data types it is safe to assume that double quotes will never appear, but
>      for textual data types one should be prepared to cope with either presence
> !    or absence of quotes.  (This is a change in behavior from pre-7.2
> !    <productname>PostgreSQL</productname> releases.)
>     </para>
>
>     <para>
> --- 559,565 ----
>      embedded in element values will be backslash-escaped.  For numeric
>      data types it is safe to assume that double quotes will never appear, but
>      for textual data types one should be prepared to cope with either presence
> !    or absence of quotes.
>     </para>
>
>     <para>
> Index: doc/src/sgml/backup.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/backup.sgml,v
> retrieving revision 2.79
> diff -c -c -r2.79 backup.sgml
> *** doc/src/sgml/backup.sgml    10 Mar 2006 19:10:46 -0000    2.79
> --- doc/src/sgml/backup.sgml    20 Mar 2006 23:42:31 -0000
> ***************
> *** 1211,1218 ****
>      the number after the first dot changes). This does not apply to
>      different minor releases under the same major release (where the
>      number after the second dot changes); these always have compatible
> !    storage formats. For example, releases 7.0.1, 7.1.2, and 7.2 are
> !    not compatible, whereas 7.1.1 and 7.1.2 are. When you update
>      between compatible versions, you can simply replace the executables
>      and reuse the data directory on disk. Otherwise you need to back
>      up your data and restore it on the new server.  This has to be done
> --- 1211,1218 ----
>      the number after the first dot changes). This does not apply to
>      different minor releases under the same major release (where the
>      number after the second dot changes); these always have compatible
> !    storage formats. For example, releases 7.2.1, 7.3.2, and 7.4 are
> !    not compatible, whereas 7.2.1 and 7.2.2 are. When you update
>      between compatible versions, you can simply replace the executables
>      and reuse the data directory on disk. Otherwise you need to back
>      up your data and restore it on the new server.  This has to be done
> Index: doc/src/sgml/config.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
> retrieving revision 1.52
> diff -c -c -r1.52 config.sgml
> *** doc/src/sgml/config.sgml    10 Mar 2006 19:10:47 -0000    1.52
> --- doc/src/sgml/config.sgml    20 Mar 2006 23:42:34 -0000
> ***************
> *** 3788,3801 ****
>         <indexterm><primary>inheritance</></>
>         <listitem>
>          <para>
> !         This controls the inheritance semantics, in particular whether
> !         subtables are included by various commands by default. They were
> !         not included in versions prior to 7.1. If you need the old
> !         behavior you can set this variable to <literal>off</>, but in
> !         the long run you are encouraged to change your applications to
> !         use the <literal>ONLY</literal> key word to exclude subtables.
> !         See <xref linkend="ddl-inherit"> for more information about
> !         inheritance.
>          </para>
>         </listitem>
>        </varlistentry>
> --- 3788,3798 ----
>         <indexterm><primary>inheritance</></>
>         <listitem>
>          <para>
> !         This controls the inheritance semantics.  If turned <literal>off</>,
> !         subtables are not included by various commands by default; basically
> !         an implied <literal>ONLY</literal> key word.  This was added for
> !         compatibility with releases prior to 7.1.  See
> !         <xref linkend="ddl-inherit"> for more information.
>          </para>
>         </listitem>
>        </varlistentry>
> Index: doc/src/sgml/datatype.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v
> retrieving revision 1.166
> diff -c -c -r1.166 datatype.sgml
> *** doc/src/sgml/datatype.sgml    10 Mar 2006 19:10:47 -0000    1.166
> --- doc/src/sgml/datatype.sgml    20 Mar 2006 23:42:41 -0000
> ***************
> *** 894,915 ****
>       string.
>      </para>
>
> !     <para>
> !      If one explicitly casts a value to <type>character
> !      varying(<replaceable>n</>)</type> or
> !      <type>character(<replaceable>n</>)</type>, then an over-length
> !      value will be truncated to <replaceable>n</> characters without
> !      raising an error. (This too is required by the
> !      <acronym>SQL</acronym> standard.)
> !     </para>
> !
> !    <note>
> !     <para>
> !      Prior to <productname>PostgreSQL</> 7.2, strings that were too long were
> !      always truncated without raising an error, in either explicit or
> !      implicit casting contexts.
> !     </para>
> !    </note>
>
>      <para>
>       The notations <type>varchar(<replaceable>n</>)</type> and
> --- 894,907 ----
>       string.
>      </para>
>
> !    <para>
> !     If one explicitly casts a value to <type>character
> !     varying(<replaceable>n</>)</type> or
> !     <type>character(<replaceable>n</>)</type>, then an over-length
> !     value will be truncated to <replaceable>n</> characters without
> !     raising an error. (This too is required by the
> !     <acronym>SQL</acronym> standard.)
> !    </para>
>
>      <para>
>       The notations <type>varchar(<replaceable>n</>)</type> and
> ***************
> *** 2899,2913 ****
>       </para>
>      </note>
>
> -    <note>
> -     <para>
> -      Prior to <productname>PostgreSQL</> 7.2, <type>bit</type> data
> -      was always silently truncated or zero-padded on the right, with
> -      or without an explicit cast. This was changed to comply with the
> -      <acronym>SQL</acronym> standard.
> -     </para>
> -    </note>
> -
>      <para>
>       Refer to <xref
>       linkend="sql-syntax-bit-strings"> for information about the syntax
> --- 2891,2896 ----
> Index: doc/src/sgml/datetime.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/datetime.sgml,v
> retrieving revision 2.48
> diff -c -c -r2.48 datetime.sgml
> *** doc/src/sgml/datetime.sgml    10 Mar 2006 19:10:47 -0000    2.48
> --- doc/src/sgml/datetime.sgml    20 Mar 2006 23:42:42 -0000
> ***************
> *** 171,180 ****
>         <tip>
>          <para>
>           Gregorian years AD 1-99 may be entered by using 4 digits with leading
> !         zeros (e.g., <literal>0099</> is AD 99). Previous versions of
> !         <productname>PostgreSQL</productname> accepted years with three
> !         digits and with single digits, but as of version 7.0 the rules have
> !         been tightened up to reduce the possibility of ambiguity.
>          </para>
>         </tip>
>        </para>
> --- 171,177 ----
>         <tip>
>          <para>
>           Gregorian years AD 1-99 may be entered by using 4 digits with leading
> !         zeros (e.g., <literal>0099</> is AD 99).
>          </para>
>         </tip>
>        </para>
> Index: doc/src/sgml/ddl.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/ddl.sgml,v
> retrieving revision 1.55
> diff -c -c -r1.55 ddl.sgml
> *** doc/src/sgml/ddl.sgml    18 Feb 2006 23:14:45 -0000    1.55
> --- doc/src/sgml/ddl.sgml    20 Mar 2006 23:42:43 -0000
> ***************
> *** 2145,2165 ****
>     <note>
>      <title>Deprecated</title>
>      <para>
> !      In previous versions of <productname>PostgreSQL</productname>, the
>        default behavior was not to include child tables in queries. This was
> !      found to be error prone and is also in violation of the SQL
> !      standard. Under the old syntax, to include the child tables you append
> !      <literal>*</literal> to the table name. For example:
> ! <programlisting>
> ! SELECT * from cities*;
> ! </programlisting>
> !      You can still explicitly specify scanning child tables by
> !      appending <literal>*</literal>, as well as explicitly specify not
> !      scanning child tables by writing <literal>ONLY</literal>.  But
> !      beginning in version 7.1, the default behavior for an undecorated
> !      table name is to scan its child tables too, whereas before the
> !      default was not to do so.  To get the old default behavior,
> !      disable the <xref linkend="guc-sql-inheritance"> configuration
>        option.
>      </para>
>     </note>
> --- 2145,2155 ----
>     <note>
>      <title>Deprecated</title>
>      <para>
> !      In releases of <productname>PostgreSQL</productname> prior to 7.1, the
>        default behavior was not to include child tables in queries. This was
> !      found to be error prone and also in violation of the SQL
> !      standard.  You can get the pre-7.1 behavior by turning off the
> !      <xref linkend="guc-sql-inheritance"> configuration
>        option.
>      </para>
>     </note>
> Index: doc/src/sgml/func.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v
> retrieving revision 1.313
> diff -c -c -r1.313 func.sgml
> *** doc/src/sgml/func.sgml    10 Mar 2006 20:15:25 -0000    1.313
> --- doc/src/sgml/func.sgml    20 Mar 2006 23:42:48 -0000
> ***************
> *** 6118,6131 ****
>        the result is given to the full available precision.
>       </para>
>
> -     <note>
> -      <para>
> -       Prior to <productname>PostgreSQL</productname> 7.2, the precision
> -       parameters were unimplemented, and the result was always given
> -       in integer seconds.
> -      </para>
> -     </note>
> -
>      <para>
>       Some examples:
>   <screen>
> --- 6118,6123 ----
> Index: doc/src/sgml/libpq.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v
> retrieving revision 1.206
> diff -c -c -r1.206 libpq.sgml
> *** doc/src/sgml/libpq.sgml    10 Mar 2006 19:10:48 -0000    1.206
> --- doc/src/sgml/libpq.sgml    20 Mar 2006 23:42:50 -0000
> ***************
> *** 686,699 ****
>   <indexterm><primary>libpq-int.h</></>
>   <application>libpq</application> application programmers should be careful to
>   maintain the <structname>PGconn</structname> abstraction.  Use the accessor
> ! functions described below to get
> ! at the contents of <structname>PGconn</structname>.  Avoid directly referencing the fields of the
> ! <structname>PGconn</> structure because they are subject to change in the future.
> ! (Beginning in <productname>PostgreSQL</productname> release 6.4, the
> ! definition of the <type>struct</type> behind <structname>PGconn</> is not even provided in
<filename>libpq-fe.h</filename>.
> ! If you have old code that accesses <structname>PGconn</structname> fields directly, you can keep using it
> ! by including <filename>libpq-int.h</filename> too, but you are encouraged to fix the code
> ! soon.)
>   </para>
>   </tip>
>
> --- 686,695 ----
>   <indexterm><primary>libpq-int.h</></>
>   <application>libpq</application> application programmers should be careful to
>   maintain the <structname>PGconn</structname> abstraction.  Use the accessor
> ! functions described below to get at the contents of <structname>PGconn</structname>.
> ! Reference to internal <structname>PGconn</structname> fields using
> ! <filename>libpq-int.h</> is not recommended because they are subject to change
> ! in the future.
>   </para>
>   </tip>
>
> ***************
> *** 2972,2978 ****
>
>   typedef struct pgNotify {
>       char *relname;              /* notification condition name */
> !     int  be_pid;                /* process ID of server process */
>       char *extra;                /* notification parameter */
>   } PGnotify;
>   </synopsis>
> --- 2968,2974 ----
>
>   typedef struct pgNotify {
>       char *relname;              /* notification condition name */
> !     int  be_pid;                /* process ID of notifying server process */
>       char *extra;                /* notification parameter */
>   } PGnotify;
>   </synopsis>
> ***************
> *** 2986,2999 ****
>   always point to an empty string.)
>   </para>
>
> - <note>
> - <para>
> -  In <productname>PostgreSQL</productname> 6.4 and later,
> -  the <structfield>be_pid</structfield> is that of the notifying server process,
> -  whereas in earlier versions it was always the <acronym>PID</acronym> of your own server process.
> - </para>
> - </note>
> -
>   <para>
>   <xref linkend="libpq-example-2"> gives a sample program that illustrates the use
>   of asynchronous notification.
> --- 2982,2987 ----
> ***************
> *** 4288,4303 ****
>      </itemizedlist>
>     </para>
>
> -   <para>
> -    <indexterm><primary>libpq-int.h</></>
> -    If your codes references the header file
> -    <filename>libpq-int.h</filename> and you refuse to fix your code to
> -    not use it, starting in <productname>PostgreSQL</> 7.2, this file will be found in
> -    <filename><replaceable>includedir</replaceable>/postgresql/internal/libpq-int.h</filename>,
> -    so you need to add the appropriate <option>-I</option> option to
> -    your compiler command line.
> -   </para>
> -
>    </sect1>
>
>
> --- 4276,4281 ----
> Index: doc/src/sgml/lobj.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v
> retrieving revision 1.39
> diff -c -c -r1.39 lobj.sgml
> *** doc/src/sgml/lobj.sgml    10 Mar 2006 19:10:48 -0000    1.39
> --- doc/src/sgml/lobj.sgml    20 Mar 2006 23:42:50 -0000
> ***************
> *** 25,67 ****
>       values.  This is not described here.
>      </para>
>
> !   <sect1 id="lo-history">
> !    <title>History</title>
>
> !    <para>
> !     <productname>POSTGRES 4.2</productname>, the indirect predecessor
> !     of <productname>PostgreSQL</productname>, supported three standard
> !     implementations of large objects: as files external to the
> !     <productname>POSTGRES</productname> server, as external files
> !     managed by the <productname>POSTGRES</productname> server, and as
> !     data stored within the <productname>POSTGRES</productname>
> !     database. This caused considerable confusion among users. As a
> !     result, only support for large objects as data stored within the
> !     database is retained in <productname>PostgreSQL</productname>.
> !     Even though this is slower to access, it provides stricter data
> !     integrity.  For historical reasons, this storage scheme is
> !     referred to as <firstterm>Inversion large
> !     objects</firstterm>. (You will see the term Inversion used
> !     occasionally to mean the same thing as large object.)  Since
> !     <productname>PostgreSQL 7.1</productname>, all large objects are
> !     placed in one system table called
> !     <classname>pg_largeobject</classname>.
> !    </para>
>
>      <para>
> !     <indexterm>
> !      <primary>TOAST</primary>
> !      <secondary>versus large objects</secondary>
> !     </indexterm>
> !     <productname>PostgreSQL</productname> 7.1 introduced a mechanism
> !     (nicknamed <quote><acronym>TOAST</acronym></quote>) that allows
> !     data values to be much larger than single pages.  This
> !     makes the large object facility partially obsolete.  One
>       remaining advantage of the large object facility is that it allows values
>       up to 2 GB in size, whereas <acronym>TOAST</acronym>ed fields can be at
> !     most 1 GB.  Also, large objects can be manipulated piece-by-piece much more
> !     easily than ordinary data fields, so the practical limits are considerably
> !     different.
>      </para>
>
>     </sect1>
> --- 25,50 ----
>       values.  This is not described here.
>      </para>
>
> !   <sect1 id="lo-intro">
> !    <title>Introduction</title>
>
> !    <indexterm>
> !     <primary>TOAST</primary>
> !     <secondary>versus large objects</secondary>
> !    </indexterm>
>
>      <para>
> !     All large objects are placed in a single system table called
> !     <classname>pg_largeobject</classname>.
> !     <productname>PostgreSQL</productname> also supports a storage system called
> !     <quote><acronym>TOAST</acronym></quote> that automatically stores values
> !     larger than a single database page into a secondary storage area per table.
> !     This makes the large object facility partially obsolete.  One
>       remaining advantage of the large object facility is that it allows values
>       up to 2 GB in size, whereas <acronym>TOAST</acronym>ed fields can be at
> !     most 1 GB.  Also, large objects can be randomly modified using a read/write
> !     API that is more efficient than performing such operations using
> !     <acronym>TOAST</acronym>.
>      </para>
>
>     </sect1>
> ***************
> *** 70,77 ****
>      <title>Implementation Features</title>
>
>      <para>
> !     The large object implementation breaks  large
> !     objects  up  into  <quote>chunks</quote>  and  stores  the chunks in
>       rows in the database.  A B-tree index guarantees fast
>       searches for the correct chunk number when doing random
>       access reads and writes.
> --- 53,60 ----
>      <title>Implementation Features</title>
>
>      <para>
> !     The large object implementation breaks large
> !     objects up into <quote>chunks</quote> and stores the chunks in
>       rows in the database.  A B-tree index guarantees fast
>       searches for the correct chunk number when doing random
>       access reads and writes.
> ***************
> *** 86,95 ****
>       <productname>PostgreSQL</productname> client interface libraries
>       provide for accessing large objects.  All large object
>       manipulation using these functions <emphasis>must</emphasis> take
> !     place within an SQL transaction block.  (This requirement is
> !     strictly enforced as of <productname>PostgreSQL 6.5</>, though it
> !     has been an implicit requirement in previous versions, resulting
> !     in misbehavior if ignored.)
>       The  <productname>PostgreSQL</productname>  large  object interface is modeled after
>       the <acronym>Unix</acronym>  file-system  interface,  with  analogues  of
>       <function>open</function>,  <function>read</function>,
> --- 69,75 ----
>       <productname>PostgreSQL</productname> client interface libraries
>       provide for accessing large objects.  All large object
>       manipulation using these functions <emphasis>must</emphasis> take
> !     place within an SQL transaction block.
>       The  <productname>PostgreSQL</productname>  large  object interface is modeled after
>       the <acronym>Unix</acronym>  file-system  interface,  with  analogues  of
>       <function>open</function>,  <function>read</function>,
> Index: doc/src/sgml/maintenance.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v
> retrieving revision 1.54
> diff -c -c -r1.54 maintenance.sgml
> *** doc/src/sgml/maintenance.sgml    10 Mar 2006 19:10:48 -0000    1.54
> --- doc/src/sgml/maintenance.sgml    20 Mar 2006 23:42:50 -0000
> ***************
> *** 82,96 ****
>     </para>
>
>     <para>
> !    Beginning in <productname>PostgreSQL</productname> 7.2, the standard form
> !    of <command>VACUUM</> can run in parallel with normal database operations
> !    (selects, inserts, updates, deletes, but not changes to table definitions).
> !    Routine vacuuming is therefore not nearly as intrusive as it was in prior
> !    releases, and it is not as critical to try to schedule it at low-usage
> !    times of day.
> !   </para>
> !
> !   <para>
>      Beginning in <productname>PostgreSQL</productname> 8.0, there are
>      configuration parameters that can be adjusted to further reduce the
>      performance impact of background vacuuming.  See
> --- 82,90 ----
>     </para>
>
>     <para>
> !    The standard form of <command>VACUUM</> can run in parallel with
> !    normal database operations (SELECTs, INSERTs, UPDATEs, DELETEs, but not
> !    changes to table definitions).
>      Beginning in <productname>PostgreSQL</productname> 8.0, there are
>      configuration parameters that can be adjusted to further reduce the
>      performance impact of background vacuuming.  See
> ***************
> *** 245,256 ****
>       It is possible to run <command>ANALYZE</> on specific tables and even
>       just specific columns of a table, so the flexibility exists to update some
>       statistics more frequently than others if your application requires it.
> !     In practice, however, the usefulness of this feature is doubtful.
> !     Beginning in <productname>PostgreSQL</productname> 7.2,
> !     <command>ANALYZE</> is a fairly fast operation even on large tables,
> !     because it uses a statistical random sampling of the rows of a table
> !     rather than reading every single row.  So it's probably much simpler
> !     to just run it over the whole database every so often.
>      </para>
>
>      <tip>
> --- 239,247 ----
>       It is possible to run <command>ANALYZE</> on specific tables and even
>       just specific columns of a table, so the flexibility exists to update some
>       statistics more frequently than others if your application requires it.
> !     In practice, however, it is usually best to just analyze the entire database
> !     because it is a fast operation.  It uses a statistical random sampling of
> !     the rows of a table rather than reading every single row.
>      </para>
>
>      <tip>
> ***************
> *** 295,312 ****
>       transactions that were in the past appear to be in the future — which
>       means their outputs become invisible.  In short, catastrophic data loss.
>       (Actually the data is still there, but that's cold comfort if you can't
> !     get at it.)
> !    </para>
> !
> !    <para>
> !     Prior to <productname>PostgreSQL</productname> 7.2, the only defense
> !     against XID wraparound was to re-<command>initdb</> at least every 4
> !     billion transactions. This of course was not very satisfactory for
> !     high-traffic sites, so a better solution has been devised. The new
> !     approach allows a server to remain up indefinitely, without
> !     <command>initdb</> or any sort of restart. The price is this
> !     maintenance requirement: <emphasis>every table in the database must
> !     be vacuumed at least once every billion transactions</emphasis>.
>      </para>
>
>      <para>
> --- 286,293 ----
>       transactions that were in the past appear to be in the future — which
>       means their outputs become invisible.  In short, catastrophic data loss.
>       (Actually the data is still there, but that's cold comfort if you can't
> !     get at it.)  To avoid this, it is <emphasis>necessary to vacuum every table
> !     in every database at least once every billion transactions</emphasis>.
>      </para>
>
>      <para>
> Index: doc/src/sgml/mvcc.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/mvcc.sgml,v
> retrieving revision 2.55
> diff -c -c -r2.55 mvcc.sgml
> *** doc/src/sgml/mvcc.sgml    10 Mar 2006 19:10:48 -0000    2.55
> --- doc/src/sgml/mvcc.sgml    20 Mar 2006 23:42:51 -0000
> ***************
> *** 899,908 ****
>       TABLE</command> locks the whole table.)  This should be taken into
>       account when porting applications to
>       <productname>PostgreSQL</productname> from other environments.
> -     (Before version 6.5 <productname>PostgreSQL</productname> used
> -     read locks, and so this above consideration is also relevant when
> -     upgrading from <productname>PostgreSQL</productname> versions
> -     prior to 6.5.)
>      </para>
>
>      <para>
> --- 899,904 ----
> Index: doc/src/sgml/rules.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/rules.sgml,v
> retrieving revision 1.44
> diff -c -c -r1.44 rules.sgml
> *** doc/src/sgml/rules.sgml    22 Oct 2005 14:44:35 -0000    1.44
> --- doc/src/sgml/rules.sgml    20 Mar 2006 23:42:51 -0000
> ***************
> *** 2043,2052 ****
>   <para>
>       Another situation is cases on <command>UPDATE</command> where it depends on the
>       change of an attribute if an action should be performed or
> !     not. In <productname>PostgreSQL</productname> version 6.4, the
> !     attribute specification for rule events is disabled (it will have
> !     its comeback latest in 6.5, maybe earlier
> !     - stay tuned). So for now the only way to
>       create a rule as in the shoelace_log example is to do it with
>       a rule qualification. That results in an extra query that is
>       performed always, even if the attribute of interest cannot
> --- 2043,2049 ----
>   <para>
>       Another situation is cases on <command>UPDATE</command> where it depends on the
>       change of an attribute if an action should be performed or
> !     not. The only way to
>       create a rule as in the shoelace_log example is to do it with
>       a rule qualification. That results in an extra query that is
>       performed always, even if the attribute of interest cannot
> Index: doc/src/sgml/storage.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/storage.sgml,v
> retrieving revision 1.9
> diff -c -c -r1.9 storage.sgml
> *** doc/src/sgml/storage.sgml    10 Mar 2006 19:10:49 -0000    1.9
> --- doc/src/sgml/storage.sgml    20 Mar 2006 23:42:52 -0000
> ***************
> *** 187,201 ****
>   </para>
>
>   <para>
> ! Since <productname>PostgreSQL</productname> uses a fixed page size (commonly
> ! 8Kb), and does not allow tuples to span multiple pages, it's not possible to
> ! store very large field values directly.  Before <productname>PostgreSQL</> 7.1
> ! there was a hard limit of just under one page on the total amount of data that
> ! could be put into a table row.  In release 7.1 and later, this limit is
> ! overcome by allowing large field values to be compressed and/or broken up into
> ! multiple physical rows.  This happens transparently to the user, with only
> ! small impact on most of the backend code.  The technique is affectionately
> ! known as <acronym>TOAST</> (or <quote>the best thing since sliced bread</>).
>   </para>
>
>   <para>
> --- 187,199 ----
>   </para>
>
>   <para>
> ! <productname>PostgreSQL</productname> uses a fixed page size (commonly
> ! 8Kb), and does not allow tuples to span multiple pages.  Therefore,  it is
> ! not possible to store very large field values directly.  To overcome
> ! this limitation, large  field values are compressed and/or broken up into
> ! multiple physical rows. This happens transparently to the user, with only
> ! small impact on most of the backend code.  The technique is affectionately
> ! known as <acronym>TOAST</>  (or <quote>the best thing since sliced bread</>).
>   </para>
>
>   <para>
> Index: doc/src/sgml/xfunc.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v
> retrieving revision 1.111
> diff -c -c -r1.111 xfunc.sgml
> *** doc/src/sgml/xfunc.sgml    10 Mar 2006 19:10:49 -0000    1.111
> --- doc/src/sgml/xfunc.sgml    20 Mar 2006 23:42:53 -0000
> ***************
> *** 1192,1206 ****
>       command <literal>pg_config --pkglibdir</literal>.
>      </para>
>
> -    <para>
> -     Before <productname>PostgreSQL</productname> release 7.2, only
> -     exact absolute paths to object files could be specified in
> -     <command>CREATE FUNCTION</>.  This approach is now deprecated
> -     since it makes the function definition unnecessarily unportable.
> -     It's best to specify just the shared library name with no path nor
> -     extension, and let the search mechanism provide that information
> -     instead.
> -    </para>
>     </sect2>
>
>      <sect2 id="xfunc-c-basetype">
> --- 1192,1197 ----
> ***************
> *** 1915,1929 ****
>           --includedir-server</literal><indexterm><primary>pg_config</><secondary>with user-defined C functions</></>
>           to find out where the <productname>PostgreSQL</> server header
>           files are installed on your system (or the system that your
> !         users will be running on).  This option is new with
> !         <productname>PostgreSQL</> 7.2.  For
> !         <productname>PostgreSQL</> 7.1 you should use the option
> !         <option>--includedir</option>.  (<command>pg_config</command>
> !         will exit with a non-zero status if it encounters an unknown
> !         option.)  For releases prior to 7.1 you will have to guess,
> !         but since that was before the current calling conventions were
> !         introduced, it is unlikely that you want to support those
> !         releases.
>          </para>
>         </listitem>
>
> --- 1906,1912 ----
>           --includedir-server</literal><indexterm><primary>pg_config</><secondary>with user-defined C functions</></>
>           to find out where the <productname>PostgreSQL</> server header
>           files are installed on your system (or the system that your
> !         users will be running on).
>          </para>
>         </listitem>
>

>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do not
>        match

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Additional current timestamp values
Next
From: Bruno Wolff III
Date:
Subject: Re: [HACKERS] Automatically setting work_mem