diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
new file mode 100644
index 0000000000000000000000000000000000000000..b8e9e48fb22da1203236da91fbdc5636a0aa3529
--- /dev/null
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -0,0 +1,578 @@
+<refentry id="APP-PGRESTORE">
+ <refmeta>
+  <refentrytitle id="app-pgrestore-title">
+   <application>pg_restore</application>
+  </refentrytitle>
+  <refmiscinfo>Application</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+  <refname>
+   <application>pg_restore</application>
+  </refname>
+  <refpurpose>
+   Restore a <PRODUCTNAME>Postgres</PRODUCTNAME> database from an archive file created by 
+<APPLICATION>pg_dump</APPLICATION>
+  </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+  <refsynopsisdivinfo>
+   <date>2000-10-11</date>
+  </refsynopsisdivinfo>
+  <synopsis>
+pg_restore [ <replaceable class="parameter">archive-file</replaceable>  ] 
+    [ -h  <replaceable class="parameter">host</replaceable>  ] 
+    [ -p  <replaceable class="parameter">port</replaceable>  ]     
+    [ -t  <replaceable class="parameter">table</replaceable>  ]     
+    [ -a  ] [ -c  ] [-C] [-d <name>] 
+    [-f <replaceable class="parameter">archive-file</replaceable>] 
+    [-F <replaceable class="parameter">format</replaceable>] 
+    [ -i  <replaceable class="parameter">index</replaceable>  ] 
+    [ -l ] [ -N  ] [ -o  ] [ -O ] 
+    [ -P <replaceable class="parameter">function-name</replaceable> ] [ -r ] [ -R ] 
+    [ -s  ] [ -S ] { -T  <replaceable class="parameter">trigger</replaceable> ] [ -u  ] 
+    [-U <replaceable class="parameter">contents-file</replaceable> ] [ -v  ] [ -x ] 
+  </synopsis>
+
+  <refsect2 id="R2-APP-PG-RESTORE-1">
+   <refsect2info>
+    <date>2000-10-11</date>
+   </refsect2info>
+   <title>
+    Inputs
+   </title>
+   <para>
+    <application>pg_restore</application> accepts the following command
+    line arguments:
+
+    <variablelist>
+     <varlistentry>
+      <term><replaceable class="parameter">archive-name</replaceable></term>
+      <listitem>
+       <para>
+       Specifies the location of the archive file to be restored.
+       If not specified, and no '-f' option is specified, then STDIN is used.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-a</term>
+      <listitem>
+       <para>
+	Restore only the data, no schema (definitions).
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-c</term>
+      <listitem>
+       <para>
+	Clean (drop) schema prior to create.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-C</term>
+      <listitem>
+       <para>
+	Include SQL to create the schema.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-d <replaceable class="parameter">dbname</replaceable></term>
+      <listitem>
+       <para>
+        Connect to database <replaceable class="parameter">dbname</replaceable> and restore 
+        directly into the database. BLOBs can only be restored by using a direct database connection.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-f</term>
+      <listitem>
+       <para>
+	  Specify output file for generated script. Default is STDOUT.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-F <replaceable class="parameter">format</replaceable></term>
+      <listitem>
+       <para>
+	  Specify format of the archive.
+        It is not necessary to specify the format, since <APPLICATION>pg_restore</APPLICATION> will 
+        determine the format automatically. If specified, it can be one of the following:
+       </para>
+
+       <variablelist>
+
+        <varlistentry>
+         <term>t</term>
+         <listitem>
+          <para>
+           archive is a TAR archive. Using this archive format allows reordering and/or 
+           exclusion of schema elements at the time the database is restored. It is also possible to limit which 
+           data is reloaded at restore time.
+          </para>
+         </listitem>
+        </varlistentry>
+
+        <varlistentry>
+         <term>c</term>
+         <listitem>
+          <para>
+           archive is in the custom format from pg_dump. This is the most flexible format 
+           in that it allows reordering of data load as well as schema elements. 
+           This format is also compressed by default.
+          </para>
+         </listitem>
+        </varlistentry>
+
+       </variablelist>
+
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-i <replaceable class="parameter">index</replaceable></term>
+      <listitem>
+       <para>
+	Restore definition for named <replaceable class="parameter">index</replaceable> only.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-l</term>
+      <listitem>
+       <para>
+        List the contents of the archive. The output of this command can be used with the '-U, --use-list' option
+        to restrict and reorder the items that are restored.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-N</term>
+      <listitem>
+       <para>
+        Restore items in the original dump order. By default pg_dump will dump items in an order convenient 
+        to pg_dump, then save the archive in a modified OID order. This option overrides the OID ordering.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-o</term>
+      <listitem>
+       <para>
+        Restore items in the OID order. By default pg_dump will dump items in an order convenient 
+        to pg_dump, then save the archive in a modified OID order. This option enforces strict OID ordering.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-O</term>
+      <listitem>
+       <para>
+        Prevent any attempt to restore original object ownership. Objects will be owned by the username used
+        to attach to the database.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-P <replaceable class="parameter">procedure-name</replaceable></term>
+      <listitem>
+       <para>
+        Specify a procedure or function to be restored.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-r</term>
+      <listitem>
+       <para>
+        Restore items in modified OID order. By default pg_dump will dump items in an order convenient 
+        to pg_dump, then save the archive in a modified OID order. Most objects
+        will be restored in OID order, but some things (eg. RULES & INDEXES) will be restored at the end of
+        the process irrespective of their OIDs. This option is the default. 
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-R</term>
+      <listitem>
+       <para>
+	  Prohibit <APPLICATION>pg_restore</APPLICATION> from issuing any <PROGRAMLISTING>\connect</PROGRAMLISTING> 
+        statements or reconnecting to the database if directly connected.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-s</term>
+      <listitem>
+       <para>
+	Restore the schema (definitions), no data. Sequence values will be reset.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-S <replaceable class="parameter">username</replaceable></term>
+      <listitem>
+       <para>
+        Specify the superuser username to use when disabling triggers and/or setting ownership of schema elements.
+        By default, <APPLICATION>pg_restore</APPLICATION> will use the current username if it is a superuser.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-t <replaceable class="parameter">table</replaceable></term>
+      <listitem>
+       <para>
+	Restore schema/data for <REPLACEABLE CLASS="PARAMETER">table</REPLACEABLE> only.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-T <replaceable class="parameter">trigger</replaceable></term>
+      <listitem>
+       <para>
+	  Restore definition of <REPLACEABLE CLASS="PARAMETER">trigger</REPLACEABLE> only.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-u</term>
+      <listitem>
+       <para>
+	Use password authentication. Prompts for username and password.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-U <replaceable class="parameter">list-file</replaceable></term>
+      <listitem>
+       <para>
+	  Restore elements in <REPLACEABLE CLASS="PARAMETER">list-file</REPLACEABLE> only, and in the
+        order they appear in the file. Lines can be moved and may also be commented out by placing a ';' at the 
+        start of the line.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-v</term>
+      <listitem>
+       <para>
+	Specifies verbose mode.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-x</term>
+      <listitem>
+       <para>
+	Prevent restoration of ACLs (grant/revoke commands).
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+   </para>
+   <para>
+    <application>pg_restore</application> also accepts 
+    the following command line arguments for connection parameters:
+
+    <variablelist>
+     <varlistentry>
+      <term>-h <replaceable class="parameter">host</replaceable></term>
+      <listitem>
+       <para>
+	Specifies the hostname of the machine on which the 
+	<application>postmaster</application>
+	is running.  Defaults to using a local Unix domain socket
+	rather than an IP connection.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-p <replaceable class="parameter">port</replaceable></term>
+      <listitem>
+       <para>
+	Specifies the Internet TCP/IP port or local Unix domain socket file 
+	extension on which the <application>postmaster</application>
+	is listening for connections.  The port number defaults to 5432,
+	or the value of the <envar>PGPORT</envar>
+	environment variable (if set).
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+   </para>
+  </refsect2>
+
+  <refsect2 id="R2-APP-PG-RESTORE-2">
+   <refsect2info>
+    <date>2000-10-11</date>
+   </refsect2info>
+   <title>
+    Outputs
+   </title>
+   <para>
+    <application>pg_restore</application> will create a script file,
+    write to <filename>stdout</filename>, or restore a database directly.
+
+    <variablelist>
+     <varlistentry>
+      <term><computeroutput>
+Connection to database 'template1' failed.
+connectDB() failed: Is the postmaster running and accepting connections
+            at 'UNIX Socket' on port '<replaceable class="parameter">port</replaceable>'?
+       </computeroutput></term>
+      <listitem>
+       <para>
+	<application>pg_restore</application> could not attach to the 
+	<application>postmaster</application> 
+	process on the specified host and port.  If you see this message,
+	ensure that the <application>postmaster</application> 
+	is running on the proper host and that you have specified the proper
+	port.  If your site uses an authentication system, ensure that you
+	have obtained the required authentication credentials.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><computeroutput>
+Connection to database '<replaceable class="parameter">dbname</replaceable>' failed.
+FATAL 1:  SetUserId: user '<replaceable class="parameter">username</replaceable>' is not in 'pg_shadow'
+       </computeroutput></term>
+      <listitem>
+       <para>
+	You do not have a valid entry in the relation <literal>pg_shadow</literal>
+	and and will not be allowed to access <productname>Postgres</productname>. 
+	Contact your <productname>Postgres</productname> administrator.
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+   </para>
+
+   <note>
+    <para>
+     When a direct database connection is specified using the -d option, <application>pg_restore</application> 
+     internally executes  <command>SQL</command> statements. If you  have problems running 
+     <application>pg_restore</application>,
+     make sure you are able to select information from the database using, for
+     example, <application>psql</application>.
+    </para>
+   </note>
+  </refsect2>
+ </refsynopsisdiv>
+
+ <refsect1 id="R1-APP-PG-RESTORE-1">
+  <refsect1info>
+   <date>2000-10-11</date>
+  </refsect1info>
+  <title>
+   Description
+  </title>
+  <para>
+   <application>pg_restore</application> is a utility for restoring a
+      <productname>Postgres</productname> database dumped by <application>pg_dump</application>
+      from any one of the non-plain-text output formats.
+  </para>
+
+  <para>
+   The archive files, new with this relase, contain enough information for 
+   <application>pg_restore</application> to rebuild the database, but also allow 
+   <application>pg_restore</application> to be selective about what is restored, 
+   or even to reorder the items prior to being restored. The archive files should 
+   also be portable across architectures. <application>pg_dump</application> will 
+   produce the queries necessary to re-generate all user-defined types, functions, 
+   tables, indices, aggregates, and operators.  In addition, all the data is copied 
+   out (in text format for scripts) so that it can be readily copied in again.
+  </para>
+
+  <para>
+   <application>pg_restore</application> reads the archive file and outputs the appropriate 
+   SQL in the required order based on the command parameters. Obviously, it can not restore 
+   information that is not present in the dump file; so if the dump is made using the 
+   'dump data as inserts' option, <application>pg_restore</application> will not be able to
+   load the data using <command>COPY</command> statements.
+  </para>
+
+  <para>
+   The most flexible output file format is the new 'custom' format (-Fc). It allows for 
+   selection and reordering of all archived items, and is compressed by default. The TAR 
+   format (-Ft) is not compressed and it is not possible to reorder
+   data load, but it is otherwise quite flexible.
+  </para>
+
+  <para>
+   To reorder the items, it is first necessary to dump the contents of the archive:
+   <programlisting>
+    $ pg_restore acrhive.file --list > archive.lis    
+   </programlisting>
+   This file consists of a header and one line for each item, eg.
+   <programlisting>
+;
+; Archive created at Fri Jul 28 22:28:36 2000
+;     dbname: birds
+;     TOC Entries: 74
+;     Compression: 0
+;     Dump Version: 1.4-0
+;     Format: CUSTOM
+;
+;
+; Selected TOC Entries:
+;
+2; 145344 TABLE species postgres
+3; 145344 ACL species
+4; 145359 TABLE nt_header postgres
+5; 145359 ACL nt_header
+6; 145402 TABLE species_records postgres
+7; 145402 ACL species_records
+8; 145416 TABLE ss_old postgres
+9; 145416 ACL ss_old
+10; 145433 TABLE map_resolutions postgres
+11; 145433 ACL map_resolutions
+12; 145443 TABLE hs_old postgres
+13; 145443 ACL hs_old
+</programlisting>
+
+   Where semi-colons are comment delimiters, and the numbers at the start of lines refer to the 
+   internal archive ID assigned to each item. Lines in the file can be commented out, deleted, 
+   and/or reordered. For example,
+   <programlisting>
+10; 145433 TABLE map_resolutions postgres
+;2; 145344 TABLE species postgres
+;4; 145359 TABLE nt_header postgres
+6; 145402 TABLE species_records postgres
+;8; 145416 TABLE ss_old postgres
+   </programlisting>
+  </para>
+  <para>
+   Could be used as input to <application>pg_restore</application> and would only restore 
+   items 10 and 6, in that order.
+   <programlisting>
+    $ pg_restore acrhive.file --use=archive.lis    
+   </programlisting>
+  </para>
+
+ </refsect1>
+
+ <refsect1 id="R1-APP-PG-RESTORE-2">
+  <refsect1info>
+   <date>2000-10-11</date>
+  </refsect1info>
+  <title>
+   Notes
+  </title>
+  <para>
+   See the <application>pg_dump</application> section for details on limitation of
+   <application>pg_dump</application>.
+  </para>
+  <para>
+   The limitations of pg_restore are detailed below.
+
+   <itemizedlist>
+    <listitem>
+     <para>
+      When restoring data to a table, <application>pg_restore</application> emits queries 
+      to disable triggers on user tables before inserting the data then emits queries to 
+      re-enable them after the data has been inserted.  If the restore is stopped in the 
+      middle, the system catalogs may be left in the wrong state.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      <application>pg_restore</application> will not restore BLOBs for a single table. If 
+      an archive contains BLOBs, then all BLOBs will be restored. 
+     </para>
+    </listitem>
+
+   </itemizedlist>
+  </para>
+ </refsect1>
+
+ <refsect1 id="R1-APP-PG-RESTORE-3">
+  <refsect1info>
+   <date>2000-10-11</date>
+  </refsect1info>
+  <title>
+   Usage
+  </title>
+  <para>
+   To create a custom archive for a database of the same name as the user:
+
+   <programlisting>
+$ pg_dump -Fc > db.out
+   </programlisting>
+  </para>
+
+  <para>
+   To reload this database:
+
+   <programlisting>
+$ pg_restore db.out | psql -e database
+   </programlisting>
+  </para>
+
+  <para>
+   To dump a database called mydb that contains BLOBs to a TAR file:
+
+   <programlisting>
+$ pg_dump -Ft mydb --blobs > db.tar
+   </programlisting>
+  </para>
+
+  <para>
+   To reload this database (with BLOBs) to an existing db called newdb:
+
+   <programlisting>
+$ pg_restore db.tar --db=newdb
+   </programlisting>
+  </para>
+
+
+ </refsect1>
+</refentry>
+
+<!-- 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:nil
+sgml-default-dtd-file:"../reference.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:"/usr/lib/sgml/catalog"
+sgml-local-ecat-files:nil
+End:
+-->