pg4_dump is a utility for dumping out a postgres (version 4, release 2)
database into a script file containing query commands.  The script
files are in a ASCII format and can be used to reconstruct the
database, even on other machines and other architectures.  pg_dump
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 ASCII format so that it can be
readily copied in again.

The sources in this directory can be used to build two different
versions of the program.  The two versions require different
versions of libpq, and the same binary cannot serve both purposes.


	To build:

	   % bmake clean install

	This version of the program will read in your postgres v4r2
database and output the schema and the data tuples in one of two
formats:  POSTQUEL or SQL.  The POSTQUEL->POSTQUEL dumps are useful
for moving from one v4r2 installation to another.  The POSTQUEL->SQL
dumps are useful for migrating from v4r2 to postgres95.  

Use the -o [SQL|POSTQUEL] option to specify output query language.


How to use pg4_dump:
-------------------

The command line options are fairly self explanatory.  Use -help to 
see the command line options.  I recommend using -v to get more
verbose descriptions of what pg_dump is doing.  

After running pg4_dump, one should examine the output script file for any 
warnings, especially in light of the limitations listed below.

A typical use of pg4_dump:

	%  pg4_dump -v -f oldDB.dump  oldDB
	%  createdb newDB
 	%  monitor newDB < oldDB.dump


Caveats and limitations:
------------------------

pg4_dump has a few limitations.  The limitations mostly stem from
difficulty in extracting certain meta-information from the system
catalogs.   

   rules and views:  
	pg4_dump does not understand user-defined rules and views and
	will fail to dump them properly.  (This is due to the fact that
	rules are stored as plans in the catalogs and not textually)
	
   partial indices:
	pg4_dump does not understand partial indices. (The reason is
	the same as above.  Partial index predicates are stored as plans)
	
   source text of POSTQUEL functions:
	pg4_dump does not convert the source text of a user-defined
	POSTQUEL function into SQL.  Manual intervention is required.

   large objects:
	pg4_dump does not handle large objects.  Inversion large
	objects are ignored and must be dealt with manually.

   oid preservation:
 	pg4_dump does not preserve oid's while dumping.  If you have
	stored oid's explicitly in tables in user-defined attributes,
	and are using them as keys, then the output scripts will not
	regenerate your database correctly. 

pg4_dump has not been tested and will probably not work properly for
versions of postgres prior to 4.2.

Bug-reporting
--------------

If you should find a problem with pg4_dump, it is very important that
you provide a (small) sample database which illustrates the problem.
Please send bugs, questions, and feedback to the
	postgres95@postgres.berkeley.edu



