mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 00:05:29 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| $PostgreSQL: pgsql/contrib/pg_upgrade/TESTING,v 1.2 2010/07/03 14:23:13 momjian Exp $
 | |
| 
 | |
| The most effective way to test pg_upgrade, aside from testing on user
 | |
| data, is by upgrading the PostgreSQL regression database.
 | |
| 
 | |
| This testing process first requires the creation of a valid regression
 | |
| database dump.  Such files contain most database features and are
 | |
| specific to each major version of Postgres.
 | |
| 
 | |
| Here are the steps needed to create a regression database dump file:
 | |
| 
 | |
| 1)  Create and populate the regression database in the old cluster
 | |
|     This database can be created by running 'gmake installcheck' from
 | |
|     src/test/regression.
 | |
| 
 | |
| 2)  Use pg_dump to dump out the regression database
 | |
|     Use the new cluster's pg_dump on the old database to minimize
 | |
|     whitespace differences in the diff.
 | |
| 
 | |
| 3)  Adjust the regression database dump file
 | |
| 
 | |
|     a)  Change CREATE FUNCTION shared object paths to use '$libdir'
 | |
|         The old and new cluster will have different shared object paths.
 | |
| 
 | |
|     b)  Remove 'regex_flavor' (not supported in Postgres 9.0)
 | |
| 
 | |
|     c)  Change CREATE OR REPLACE LANGUAGE to CREATE LANGUAGE
 | |
|         The former syntax is only supported in Postgres 9.0.
 | |
| 
 | |
|     d)  Perform the load/dump twice
 | |
|         This fixes problems with the ordering of COPY columns for
 | |
|         inherited tables.
 | |
| 
 | |
|     e)  Fix any wrapping format differences
 | |
|         Commands like CREATE TRIGGER and ALTER TABLE sometimes have
 | |
|         differences.
 | |
| 
 | |
|     f)  Adjust extra_float_digits
 | |
| 	Postgres 9.0 pg_dump uses extra_float_digits=-2 for pre-9.0
 | |
| 	databases, and extra_float_digits=-3 for >= 9.0 databases.
 | |
| 	It is necessary to modify 9.0 pg_dump to always use -3, and
 | |
| 	modify the pre-9.0 old server to accept extra_float_digits=-3.
 | |
| 
 | |
| Once the dump is created, it can be repeatedly loaded into the old
 | |
| database, upgraded, and dumped out of the new database, and then
 | |
| compared to the original version. To test the dump file, perform these
 | |
| steps:
 | |
| 
 | |
| 1)  Create the old and new clusters in different directories.
 | |
| 
 | |
| 2)  Copy the regression shared object files into the appropriate /lib
 | |
|     directory for old and new clusters.
 | |
| 
 | |
| 3)  Create the regression database in the old server.
 | |
| 
 | |
| 4)  Load the dump file created above into the regression database; 
 | |
|     check for errors while loading.
 | |
| 
 | |
| 5)  Upgrade the old database to the new major version, as outlined in
 | |
|     the pg_upgrade manual section.
 | |
| 
 | |
| 6)  Use pg_dump to dump out the regression database in the new cluster.
 | |
| 
 | |
| 7)  Diff the regression database dump file with the regression dump
 | |
|     file loaded into the old server.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |